索引用于快速找出在某个列中有一特定值的行。对相关列使用索引是提高SELECT操作性能的最佳途径。
查询要使用索引最主要的条件是查询条件中需要使用索引关键字,如果是多列索引,那么只有查询条件使用了多列关键字最左边的前缀时,才可以使用索引,否则将不能使用索引。
下列情况下,MySQL不会使用已有的索引:
1.如果MySQL估计使用索引比全表扫描更慢,则不使用索引。例如:如果key_part1均匀分布在1和100之间,下列查询中使用索引就不是很好:
SELECT * FROM table_name WHERE key_part1 > 1 AND key_part1 < 90
2.如果使用HEAP表并且WHERE条件中不用=索引列,其他> 、<、 >=、 <=均不使用索引;
3.如果不是索引列的第一部分;
4.如果LIKE是以%开始;
5.对WHERE后边条件为字符串的一定要加引号,字符串如果为数字MySQL会自动转为字符串,但是不使用索引。
如果索引使用好了,会对性能有较大的提升,反之则是灾难。如何高效的使用索引,是值得我们思考的问题。
该贴被Robin编辑于2014-7-27 11:06:19该贴由hui.chen转至本版2014-11-5 16:18:27
该贴由hui.chen转至本版2014-11-5 16:22:21