码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 联合索引测试3

时间:2015-04-15 23:01:59      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

接上一篇文章:

http://www.cnblogs.com/xiaoit/p/4430387.html

 

有时候会出现某字段建立一个索引,但是查看执行计划的时候发现还是全扫了表?

可以强制走下索引看看扫描了多少数据量:

EXPLAIN SELECT * FROM tab_index force index(idx2) WHERE age = 32;

然后比较 此次需要扫描的记录数与之前全表扫描的记录数,看百分比是多少???

如果走索引扫描的数据很多的话,可能优化器会认为效率没有全扫快。索引就没有走索引。
手册上提到一个比例:每个表的索引被查询,并且使用最好的索引,除非优化器认为使用表扫描更有效。是否使用扫描取决于是否最好的索引跨越超过30%的表。
优化器更加复杂,其估计基于其它因素,例如表大小、行数和I/O块大小,因此固定比例不再决定选择使用索引还是扫描。

 

可以参考下手册:

http://dev.mysql.com/doc/refman/5.1/en/optimization.html

MySQL 联合索引测试3

标签:

原文地址:http://www.cnblogs.com/xiaoit/p/4430430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!