索引失效的情况
使用explain select....../G;来查询是否使用到索引,如果使用到,可以通过key查到,否则key为null。
1.最好全值匹配;
2.最左前缀法则:如果索引使用了多列,查询从索引的最左前列开始,且不能跳过索引中的列;
3.不在索引中做任何操作(计算,函数,类型转换),会导致索引失效而转向全表扫描;
4.存储引擎不能使用索引中范围条件右边的列,即范围之后全部失效;
5.精良使用覆盖索引,只访问索引的查询(索引列和查询列一致),减少使用select *;
6.MySQL在使用不等于的时候无法使用索引,会变成全表扫描;
7.is null,is not null也无法使用索引;
8.like以通配符(‘%aa’)索引会失效,变成全表扫描;
9.字符串不加单引号,索引失效;
10.少用or,用它来连接时索引会失效。