索引失效的前提是建立索引,并且在一定情况下索引失效不起作用了,下面列出的就是避免索引失效的十种情况
这里说一下全值匹配和最佳左前缀法则:
全值匹配的意思是查找的字段顺序和个数与索引的列的个数和顺序一致
我们发现只要索引中第一列没有或者缺少某个复合索引中的索引列都会导致索引失效,这是因为违反了最佳左前缀法则导致的,所以我们在写SQL时最好讲where后的查询列的个数顺序与复合索引的个数顺序一致
链接:最佳左前缀法则
有的小伙伴在测试的时候会出现明明违反了最佳左前缀法则仍然能够用上索引,建议看一看这篇文章:
MySQL中最左原则和覆盖索引的讨论
总结