什么情况会导致索引失效
索引失效也是慢查询的主要原因之一,常见的导致索引失效的情况有下面这些:
- 1.使用
SELECT *
进行查询; - 2.创建了组合索引,但查询条件未准守最左匹配原则;
- 3.在索引列上进行计算、函数、类型转换等操作;
- 4.以 % 开头的 LIKE 查询比如
like '%abc';
; - 5.查询条件中使用 or,且 or 的前后条件中有一个列没有索引,涉及的索引都不会被使用到;
- 6.发生隐式转换;
- 7.使用不等于(!=或者<>)的时候
- …
解决索引失效的方法
-
1.尽量使用覆盖索引(之访问索引列的查询),减少 select * 覆盖索引能减少回表次数;
-
2.使用组合索引时,需要遵循“最左前缀”原则;
-
3.不在索引列上做任何操作,例如计算、函数、类型转换,会导致索引失效而转向全表扫描;
-
4.LIKE以通配符开头(%abc)MySQL索引会失效变成全表扫描的操作;
-
5.少用or,用它来连接时会索引失效。
-
6.字符串不加单引号会导致索引失效(可能发生了索引列的隐式转换);文章来源:https://www.toymoban.com/news/detail-400532.html
-
7.MySQL在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描;文章来源地址https://www.toymoban.com/news/detail-400532.html
到了这里,关于MySQL会导致索引失效的情况与解决索引失效的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!