作者:篱边_水祭 | 来源:互联网 | 2023-05-17 03:29
在下列情况,虽然存在索引,但是mysql并不会使用相应的索引.
1.如果mysql估计使用索引比全表扫描更慢,则不使用索引.
2.如果使用memory/heap表并且where条件中不使用"="进行索引列,那么不会使用到索引.heap表只有在"="的条件下才会使用索引.
3.用or来分隔开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及到的索引都不会被用到.
4.如果使用到的条件不是复合索引的第一列,那么复合索引也不会被使用.
5.如果like是以%开始,那么也不会使用索引.
6.如果列的类型是字符串,但在where条件中把字符串常量值用引号引起来,否则也不会使用索引.