众所周知,增加索引是提高查询仍然不使用索引,这种情况严重影响性能,这里就简单总结几条如果如果列key均匀分布在1和100之间,下面的查询使用索引就不是很好:select * from table_name where key>1 and key<90;
www.2cto.com
如果or前的条件中的列有索引,而后面的列没有索引,那么涉及到的索引都不会被用到,例如:select * from table_name where key1=‘a‘ or key2=‘b‘;
查询也不会
如果索引列不是复合索引的第一部分,则不使用索引(即不符合最左前缀),例如,复合索引为(key1,key2),则
查询select * from table_name where key2=‘b‘;将不会使用索引
查询即使key1上存在索引,也不会被使用
如果key1列保存的是字符串,即使key1上有索引,也不会被使用。
www.2cto.com
从上面可以MySQL中,有Handler_read_key和Handler_read_rnd_key两个变量,看着连个参数的值。