扫码阅读
手机扫码阅读

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

80 2024-07-17

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

查看原文:什么Mysql索引失效,一文教你读懂Mysql索引使用规则和失效原因
文章来源:
springboot葵花宝典
扫码关注公众号

MySQL索引失效原因概要

本文旨在教读者理解MySQL索引的使用规则和失效原因,继续昨天关于MySQL索引创建语法和SQL性能分析的讨论。

1. 验证MySQL索引效率

通过对tb_sku表(含有1000万数据)的查询实验,发现使用主键id(索引)查询数据迅速,而未索引的字段sn查询则耗时,显示索引能显著提升查询效率。在sn字段上创建索引后,查询性能得到大幅提升。

2. 最左前缀原则

最左前缀原则要求查询从索引的最左列开始,不跳过索引中的列。跳过中间某列会导致该列及其后面的索引失效。实例演示了在联合索引user_pro_age_sta_index中,只要最左边字段profession存在,索引即生效;若跳过中间某列,则后续列的索引不生效。

3. 范围查询

在联合索引中,范围查询(如使用>, <)会导致范围条件右侧字段的索引失效,而使用>=或<=则不会。

4. 索引失效情况

  • 索引列运算:在索引列上进行运算会导致索引失效。
  • 字符串不加引号:对字符类型字段不加引号会导致索引失效。
  • 模糊查询:头部模糊匹配(%在前)会使索引失效,而尾部模糊匹配(%在后)则索引有效。
  • or连接条件:使用or连接时,如果连接的两侧字段都有索引,则索引有效;否则失效。
  • 数据分布影响:当全表扫描比使用索引更快时,MySQL会放弃使用索引。

5. 思考题

一个查询示例满足最左前缀法则,表明即便查询条件书写顺序不同,只要涉及到的联合索引的最左字段存在,索引即有效。

文章结语鼓励读者关注、点赞和分享,以支持作者。

想要了解更多内容?

查看原文:什么Mysql索引失效,一文教你读懂Mysql索引使用规则和失效原因
文章来源:
springboot葵花宝典
扫码关注公众号