news 2026/4/16 12:57:09

MySQL 数据库入门到大牛,索引失效的几种情况

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 数据库入门到大牛,索引失效的几种情况

MySQL 数据库入门到大牛,索引失效的几种情况

一、个人总结

  • 1、AND 连接的列,有联合索引,单列索引失效。
    • WHERE name = ‘JetLi’ and age = 25。
    • 如果建立了 (name, age) 联合索引,通常不需要再单独建立 name 单列索引,否则会造成冗余,增加写入成本。
  • 2、搜索条件没有使用联合索引最左边的列,联合索引失效。
    • WHERE age = 25。
    • name 和 age 有联合索引,联合索引失效。
  • 3、对列进行运算、函数、类型转换会导致索引失效。
    • WHERE name = 123 (name 是字符串类型,123 是数字)。
  • 4、范围条件右边的列,索引失效。
    • WHERE age > 25 AND name = ‘JetLi’。
    • age 和 name 有联合索引。联合索引失效。
    • 建议把范围查询的字段放在联合索引的最后,即 name 和 age。
  • 5、不等于条件,索引失效。
    • WHERE age <> ‘25’。
    • age 是不等于条件,age 单列索引失效。
  • 6、is not null,索引失效。
    • WHERE age is not null。
    • age 单列索引失效。
  • 7、通配符开头,索引失效。
    • WHERE name like ‘%Jet’。
    • name 单列索引失效。
  • 8、OR 前后存在没有索引的列,索引失效。
    • WHERE name = ‘JetLi’ OR age = 25。
    • name 有单列索引,age 没有单列索引,name 上的单列索引失效。
  • 9、数据库和表字符集不一致,索引失效。
    • 两个字符集不一致的表连接查询
  • 10、InnoDB 存储引擎,如果使用主键自增,而我们插入数据的主键忽大忽小,索引失效。
    • 这个不算索引失效,但是这种情况也会影响效率。

二、AI 验证优化

你的总结已经涵盖了 MySQL 索引失效的绝大多数核心场景,非常棒!特别是对联合索引最左前缀原则、函数操作以及类型转换的总结非常准确。
1、 完善后的“索引失效清单”

为了方便你记忆,我把我们讨论的内容整理成一个表格:

失效场景典型 SQL 示例核心原因优化建议
最左前缀原则WHERE age=25(联合索引为(name,age))跳过了联合索引最左列调整查询条件或索引顺序
索引列计算/函数WHERE YEAR(create_time) = 2023破坏了索引有序性将计算移到等号右边
类型转换WHERE phone=138...(phone为字符串)隐式转换导致全表扫描保持数据类型一致
左模糊查询WHERE name LIKE '%Li'B+树无法反向匹配改为右模糊LIKE 'Li%'
OR 条件陷阱WHERE indexed=1 OR not_indexed=2无索引列导致全表扫描使用UNION拆分查询
范围查询阻断WHERE a>1 AND b=2(联合索引(a,b))范围查询后索引断裂将范围字段放在联合索引末尾
不等于操作WHERE status != 'active'需扫描大部分数据尽量用IN列举代替
IS NOT NULLWHERE name IS NOT NULL优化器认为全表扫描更快字段设置为NOT NULL默认空值
字符集不一致JOIN时两边字符集不同需要做隐式转换统一表和字段的字符集

2、 总结

你的总结已经非常全面了,以上补充主要是为了严谨性

最后给你一个排查索引问题的终极建议:
永远不要靠猜!使用 EXPLAIN 或 EXPLAIN FORMAT=JSON 命令来查看执行计划。

  • 看 type 列:如果是 ALL 就是全表扫描(索引失效);如果是 ref/range/const 说明用了索引。
  • 看 key 列:到底用了哪个索引。
  • 看 Extra 列:是否有 Using where; Using filesort 或 Using temporary,这些也是性能杀手。

希望这些建议能帮你的总结更加完美!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 19:51:37

Rembg抠图GPU加速版部署与性能对比

Rembg抠图GPU加速版部署与性能对比 1. 智能万能抠图 - Rembg 在图像处理、电商展示、设计创作等场景中&#xff0c;自动去背景是一项高频且关键的需求。传统人工抠图效率低&#xff0c;而基于深度学习的AI智能抠图技术正逐步成为主流解决方案。其中&#xff0c;Rembg 凭借其出…

作者头像 李华
网站建设 2026/4/16 9:21:08

Qwen2.5-7B-Instruct镜像详解:支持128K上下文的开源大模型实践

Qwen2.5-7B-Instruct镜像详解&#xff1a;支持128K上下文的开源大模型实践 一、引言&#xff1a;为何选择Qwen2.5-7B-Instruct进行工程化部署&#xff1f; 随着大语言模型在实际业务场景中的广泛应用&#xff0c;对长上下文理解能力、多语言支持以及结构化输出生成能力的需求…

作者头像 李华
网站建设 2026/4/16 12:44:11

文献综述免费生成工具推荐:高效便捷的学术写作辅助方案

盯着满屏的PDF&#xff0c;眼前的外语字母开始跳舞&#xff0c;脑子里只剩下“我是谁、我在哪、这到底在说什么”的哲学三问&#xff0c;隔壁实验室的师兄已经用AI工具做完了一周的文献调研。 你也许已经发现&#xff0c;打开Google Scholar直接开搜的“原始人”模式&#xff…

作者头像 李华
网站建设 2026/4/16 12:47:16

Rembg性能优化:模型量化完整指南

Rembg性能优化&#xff1a;模型量化完整指南 1. 智能万能抠图 - Rembg 在图像处理与内容创作领域&#xff0c;自动去背景技术已成为提升效率的核心工具之一。Rembg 作为一款基于深度学习的开源图像去背解决方案&#xff0c;凭借其高精度、通用性强和易集成等优势&#xff0c;…

作者头像 李华
网站建设 2026/3/19 5:20:06

ResNet18新手指南:没GPU也能体验的3种方法

ResNet18新手指南&#xff1a;没GPU也能体验的3种方法 1. 为什么选择ResNet18作为入门模型 作为一名刚入职的测试工程师&#xff0c;你可能经常听到同事们讨论深度学习模型&#xff0c;而ResNet18正是最适合新手入门的经典模型之一。它就像编程界的"Hello World"&a…

作者头像 李华