什么Mysql索引失效,一文教你读懂Mysql索引使用规则和失效原因
768
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
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葵花宝典
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
白皮书上线