什么Mysql索引失效,一文教你读懂Mysql索引使用规则和失效原因

发布于 2024-07-17
768

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读
MySQL索引失效总结

MySQL索引失效总结

本文旨在帮助读者理解MySQL索引的使用规则及失效原因,通过实例验证索引效率,并介绍索引使用规则与失效情况。

1. 验证Mysql索引效率

实验验证了通过索引字段进行查询(如主键id)效率较高,而非索引字段查询耗时较长。创建索引后,查询性能大幅提升,提醒在设计表时需要提前规划索引。

2. Mysql索引使用规则

2.1 最左前缀原则

最左前缀法则要求查询必须从联合索引的最左边字段开始,且不能跳过中间列,否则索引可能部分或完全失效。通过多个查询案例验证了该法则的作用。

2.2 范围查询

范围查询中使用">"或"<"时,范围查询右边的字段索引失效;而使用">="或"="时,所有字段均可走索引。

3. 索引失效情况

3.1 索引列运算操作

索引字段进行运算操作(如函数运算)时,索引会失效,数据库会进行全表扫描。

3.2 字符串不加引号

对于字符串类型字段,不加引号会导致隐式类型转换,从而索引失效。

3.3 模糊查询

模糊查询中,尾部通配符(如"77%")索引生效,而头部通配符(如"%77")索引失效。

3.4 or连接条件

or连接条件中,若两侧字段均有索引,索引生效;但如果其中一侧字段没有索引,则索引失效。

3.5 数据分布影响

MySQL会评估索引效率与全表扫描效率,若全表扫描更快,则索引失效。数据分布情况会直接影响查询计划。

3.6 is null与is not null

对于is null或is not null语句,是否走索引取决于数据分布情况和具体查询条件。

4. 思考题

当查询SQL语句完全满足最左前缀法则时,联合索引生效,索引长度根据字段顺序和长度计算。

原创不易,感谢阅读并支持!

springboot葵花宝典