<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT公司面试手册 &#187; MySQL</title>
	<atom:link href="http://www.mianwww.com/html/category/it-interview/mysql-it-interview/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mianwww.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 11:48:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>mysql如何实现高效分页</title>
		<link>http://www.mianwww.com/html/2012/01/12747.html</link>
		<comments>http://www.mianwww.com/html/2012/01/12747.html#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:35:33 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/html/2012/01/12747.html</guid>
		<description><![CDATA[先看一下分页的基本原理（我拿的是CSDN那个百万级数据库来测试！）： SELECT * FROM `csdn` ORDER BY id DESC LIMIT 100000,2000; 耗时： 0.813ms 分析：对上面的mysql语句说明：limit 100000,2000的意思扫描满足条件的102000行，扔掉前面的100000行，返回最后的2000行。 问题就在这里，如果是limit 100000,20000，需要扫描120000行，在一个高并发的应用里，每次查询需要扫描超过100000行，性能肯定大打折扣。 在《efficient pagination using mysql》中提出的clue方式。 利用clue方法，给翻页提供一些线索，比如还是SELECT * FROM `csdn` order by id desc，按id降序分页，每页2000条，当前是第50页，当前页条目id最大的是102000，最小的是100000。如果我们只提供上一页、下一页这样的跳转（不提供到第N页的跳转）。 那么在处理上一页的时候SQL语句可以是： SELECT * FROM `csdn` WHERE id102000 ORDER BY id ASC LIMIT 2000; #下一页 耗时：0.015ms 这样，不管翻多少页，每次查询只扫描20行。效率大大提高了！ 但是，这样分页的缺点是只能提供上一页、下一页的链接形式。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2012/01/12747.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql索引优化面试题</title>
		<link>http://www.mianwww.com/html/2011/12/12472.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12472.html#comments</comments>
		<pubDate>Fri, 09 Dec 2011 11:42:01 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12472</guid>
		<description><![CDATA[曾经偷偷的面试了两个单位，都提到了Mysql的优化问题，所以以后要多多学习数据库的优化知识了。建设数据库的优化大概主要就是索引的优化了吧，因为我们不可能修改数据结构的情况下，提高数据库的查询效率似乎也只能用索引了。当然这也是建立在你sql语句写的比较科学的情况下，如果你的sql语句本身就写的比较垃圾，神仙也救不了你！ 下边是在网上找到的一些资料，保留下来备用吧 1，创建索引 对于查询占主要的应用来说，索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的，或者说没有添加更为有效的索引导致。如果不加索引的话，那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描，如果一张表的数据量很大而符合条件的结果又很少，那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可，比如性别可能就只有两个值，建索引不仅没什么优势，还会影响到更新速度，这被称为过度索引。 2，复合索引 比如有一条语句是这样的：select * from users where area=’beijing’ and age=22; 如果我们是在area和age上分别创建单个索引的话，由于mysql查询每次只能使用一个索引，所以虽然这样已经相对不做索引时全表扫描提高了很多效率，但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引，那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引，这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边，依次递减。 3，索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中，复合索引中只要有一列含有NULL值，那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。 4，使用短索引 对串列进行索引，如果可能应该指定一个前缀长度。例如，如果有一个CHAR(255)的 列，如果在前10 个或20 个字符内，多数值是惟一的，那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。 5，排序的索引问题 mysql查询只使用一个索引，因此如果where子句中已经使用了索引的话，那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作；尽量不要包含多个列的排序，如果需要最好给这些列创建复合索引。 6，like语句操作 一般情况下不鼓励使用like操作，如果非使用不可，如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。 7，不要在列上进行运算 select * from users where YEAR(adddate)&#60;2007; 将在每个行上进行运算，这将导致索引失效而进行全表扫描，因此我们可以改成 select * from users where adddate&#60;‘2007-01-01’; 8，不使用NOT IN和&#60;&#62;操作 NOT IN和&#60;&#62;操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替，id&#60;&#62;3则可使用id&#62;3 or id&#60;3来代替。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12472.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql里记录货币用什么字段类型好</title>
		<link>http://www.mianwww.com/html/2011/12/12470.html</link>
		<comments>http://www.mianwww.com/html/2011/12/12470.html#comments</comments>
		<pubDate>Fri, 09 Dec 2011 11:41:30 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12470</guid>
		<description><![CDATA[NUMERIC和DECIMAL类型被MySQL实现为同样的类型，这在SQL92标准允许。他们被用于保存值，该值的准确精度是极其重要的值，例如与金钱有关的数据。当声明一个类是这些类型之一时，精度和规模的能被(并且通常是)指定；例如： salary DECIMAL(9,2) 在这个例子中，9(precision)代表将被用于存储值的总的小数位数，而2(scale)代表将被用于存储小数点后的位数。因此，在这种情况下，能被存储在salary列中的值的范围是从-9999999.99到9999999.99。在ANSI/ISO SQL92中，句法DECIMAL(p)等价于DECIMAL(p,0)。同样，句法DECIMAL等价于DECIMAL(p,0)，这里实现被允许决定值p。MySQL当前不支持DECIMAL/NUMERIC数据类型的这些变种形式的任一种。这一般说来不是一个严重的问题，因为这些类型的主要益处得自于明显地控制精度和规模的能力。 DECIMAL和NUMERIC值作为字符串存储，而不是作为二进制浮点数，以便保存那些值的小数精度。一个字符用于值的每一位、小数点(如果scale&#62;0)和“-”符号(对于负值)。如果scale是0，DECIMAL和NUMERIC值不包含小数点或小数部分。 DECIMAL和NUMERIC值得最大的范围与DOUBLE一样，但是对于一个给定的DECIMAL或NUMERIC列，实际的范围可由制由给定列的precision或scale限制。当这样的列赋给了小数点后面的位超过指定scale所允许的位的值，该值根据scale四舍五入。当一个DECIMAL或NUMERIC列被赋给了其大小超过指定(或缺省的）precision和scale隐含的范围的值，MySQL存储表示那个范围的相应的端点值。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/12/12470.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql存储引擎有哪些？如何修改mysql存储引擎？</title>
		<link>http://www.mianwww.com/html/2011/11/12316.html</link>
		<comments>http://www.mianwww.com/html/2011/11/12316.html#comments</comments>
		<pubDate>Sun, 27 Nov 2011 11:46:15 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12316</guid>
		<description><![CDATA[MyISAM indexed sequential access method (有索引的顺序访问方法) MyISAM 具有检查和修复表格的大多数工具。表格可以被压缩，而且支持全文收索 不是事务安全的，而且不支持外键。 MEMORY 也是以前的(HEAP) 该类型表存储在内存中，表的索引是哈希分布的。 merge 这些表为了查询目的，把myisam 表集合作为单个表，因此你可以在某些操作系统中避开最大文件大小的限制。 archive 这种类型的表只支持，insert ,select 不支持delete,update,replace ,不使用索引。 csv 这些表保存在服务器的单个文件中，它包含了用逗号间隔的数据。 innodb 这种表是事务安全的。提供了commit（提交） rollback（实务回滚）支持外键，比myisam慢。 修改mysql存储引擎alter table tablename type = innodb;]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/12316.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL面试题大全</title>
		<link>http://www.mianwww.com/html/2011/09/10386.html</link>
		<comments>http://www.mianwww.com/html/2011/09/10386.html#comments</comments>
		<pubDate>Tue, 27 Sep 2011 13:23:06 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=10386</guid>
		<description><![CDATA[1 mysql你都修改了那些配置文件来进行优化(问配置文件中具体修改的内容)? 2 数据库用的什么？mysql用了几台？是否做读写分离？主从复制做了读写分离，主挂了或者从挂了你怎么办？ 3 mysql出现过什么问题，如何解决的？ 4 mysql如何创建一个库，添加一个表，在表中插入数据。 5 mysql做过什么优化 6 以前工作中mysql连接数 7 数据库 怎么备份的 8 oracle怎么调优的 9 你们mysql数据量有多大？ 10 你们备份数据是备份在同一设备？ 11 你们是用什么备份的 12 MYSQL会什么？会SQL语句么？ 13 会MYSQL调优么？ 14 mysql是怎么备份的 15 找出当前目录30天之前的文件，并删除 16 主从复制出错怎么解决 17 mysql的配置文件位置 18 &#8220;mysql 四中操作操作是什么 &#8221; 19 &#8220;增删改查 你觉得那个最占用资源 &#8221; 20 mysql 简单的 怎么登入 怎么创建数据库bbb创建 用户 密码 授权 21 mysql数据库同步怎样实现 22 ms2005数据库怎样做优化 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/09/10386.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>介绍一下MYSQL常用的优化技巧</title>
		<link>http://www.mianwww.com/html/2010/02/7109.html</link>
		<comments>http://www.mianwww.com/html/2010/02/7109.html#comments</comments>
		<pubDate>Mon, 01 Feb 2010 14:41:24 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=7109</guid>
		<description><![CDATA[MySQL 自带 slow log 的分析工具 mysqldumpslow ，但是没有说明。本文通过分析该脚本，介绍了其用法。 slow log 是 MySQL 根据 SQL 语句的执行时间设定，写入的一个文件，用于分析执行较慢的语句。 只要在 my.cnf 文件中配置好： log-slow-queries = [slow_query_log_filename] 即可记录超过默认的 10s 执行时间的 SQL 语句。 如果要修改默认设置，可以添加： long_query_time = 5 设定为 5s 。 如果要记录所有 SQL 语句，可以写入： log-long-format # t=time, l=lock time, r=rows # at, al, 以及 ar 是对应的平均值 mysqldumpslow 可以接受的参数有： &#8216;v+&#8217;, # verbose &#8216;d+&#8217;, # debug [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2010/02/7109.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql有关权限的表都有哪几个？</title>
		<link>http://www.mianwww.com/html/2009/12/6633.html</link>
		<comments>http://www.mianwww.com/html/2009/12/6633.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 09:09:34 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=6633</guid>
		<description><![CDATA[MySQL服务器通过权限表来控制用户对数据库的访问，权限表存放在mysql数据库里，由mysql_install_db脚本初始化。这些权限表分别user，db，table_priv，columns_priv和host。下面分别介绍一下这些表的结构和内容： user权限表：记录允许连接到服务器的用户帐号信息，里面的权限是全局级的。 db权限表：记录各个帐号在各个数据库上的操作权限。 table_priv权限表：记录数据表级的操作权限。 columns_priv权限表：记录数据列级的操作权限。 host权限表：配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2009/12/6633.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MYSQL支持事务吗？</title>
		<link>http://www.mianwww.com/html/2009/11/6455.html</link>
		<comments>http://www.mianwww.com/html/2009/11/6455.html#comments</comments>
		<pubDate>Mon, 30 Nov 2009 03:41:12 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=6455</guid>
		<description><![CDATA[在缺省模式下，MYSQL是autocommit模式的，所有的数据库更新操作都会即时提交，所以在缺省情况下，mysql是不支持事务的。 但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话，你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式， 在非autocommit模式下，你必须使用COMMIT来提交你的更改，或者用ROLLBACK来回滚你的更改。 示例如下： START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT;]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2009/11/6455.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL相比于其他数据库有哪些特点？</title>
		<link>http://www.mianwww.com/html/2009/11/5318.html</link>
		<comments>http://www.mianwww.com/html/2009/11/5318.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 10:06:21 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=5318</guid>
		<description><![CDATA[MySQL是一个小型关系型数据库管理系统，开发者为瑞典MySQL AB公司，现在已经 被Sun公司收购，支持FreeBSD、Linux、MAC、Windows等多种操作系统 与其他的大型数据库例如Oracle、DB2、SQL Server等相比功能稍弱一些 1、可以处理拥有上千万条记录的大型数据 2、支持常见的SQL语句规范 3、可移植行高，安装简单小巧 4、良好的运行效率，有丰富信息的网络支持 5、调试、管理，优化简单（相对其他大型数据库）]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2009/11/5318.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>介绍一下mysql的日期和时间函数</title>
		<link>http://www.mianwww.com/html/2009/10/5052.html</link>
		<comments>http://www.mianwww.com/html/2009/10/5052.html#comments</comments>
		<pubDate>Wed, 28 Oct 2009 03:19:29 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=5052</guid>
		<description><![CDATA[这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) &#8211; TO_DAYS(date_col) SELECT DAYOFWEEK(&#8217;1998-02-03&#8242;); -> 3 WEEKDAY(date) 返回 date 的星期索引(0 = Monday, 1 = Tuesday, &#8230; 6 = Sunday)： mysql> SELECT WEEKDAY(&#8217;1998-02-03 22:23:00&#8242;); -> 1 mysql> SELECT WEEKDAY(&#8217;1997-11-05&#8242;); -> 2 DAYOFMONTH(date) 返回 date 是一月中的第几天，范围为 1 到 31： mysql> SELECT DAYOFMONTH(&#8217;1998-02-03&#8242;); -> 3 DAYOFYEAR(date) [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2009/10/5052.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

