首页 文章 分类 关于

MySQL 8 索引优化实战:从 EXPLAIN 到慢查询治理

通过真实案例拆解 MySQL 索引失效、覆盖索引、索引下推等核心知识点。

作者头像
杨一一

这个人很懒,什么都没留下

前言

MySQL 索引优化是后端工程师的核心技能。本文通过实战案例拆解常见优化点。

一、EXPLAIN 详解

关键指标:

- type:访问类型,理想值 ref / range
- key:实际使用的索引
- rows:预估扫描行数
- Extra:Using index 表示覆盖索引,Using filesort 表示额外排序

二、索引失效的常见场景

1. 函数操作:WHERE YEAR(created_at) = 2026 → 用范围查询代替
2. 类型转换:字符串字段用数字查询
3. LIKE 'xxx%' 可以用索引,LIKE '%xxx' 不行
4. OR 两边都必须有索引

三、覆盖索引

查询字段都在索引中,避免回表:

SELECT id, name FROM users WHERE status = 1;
-- 索引 (status, name, id) 即可覆盖

四、索引下推(ICP)

MySQL 5.6+ 的特性,将 where 条件下推到存储引擎层过滤,减少回表次数。

五、慢查询治理流程

1. 开启 slow_query_log
2. 用 pt-query-digest 分析
3. 优先优化 top 10 慢查询
4. 建立索引前先 EXPLAIN 验证

六、复合索引顺序

遵循"最左前缀"原则。等值查询在前,范围查询在后。

总结

索引优化不是盲目加索引,而是理解查询模式后精准设计。EXPLAIN 是你的好伙伴。

1

评论 (0)

暂无评论,快来发表第一条评论吧