案例总览
共 55 个精选案例,覆盖 MySQL 优化的七大核心场景。每个案例都带真实数据,可一键复现。
一、索引设计与失效(14 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 01 | 深度分页 LIMIT 大偏移 | ⭐⭐ | 5.7 & 8.0 |
| 02 | 联合索引最左前缀失效 | ⭐ | 5.7 & 8.0 |
| 03 | 隐式类型转换致索引失效 | ⭐⭐ | 5.7 & 8.0 |
| 04 | 函数操作致索引失效 | ⭐⭐ | 5.7 & 8.0 |
| 05 | LIKE 前导通配符 | ⭐ | 5.7 & 8.0 |
| 06 | OR 条件与索引合并 | ⭐⭐ | 5.7 & 8.0 |
| 07 | 范围查询后列索引失效 | ⭐⭐ | 5.7 & 8.0 |
| 08 | 覆盖索引避免回表 | ⭐⭐ | 5.7 & 8.0 |
| 09 | 索引下推 ICP | ⭐⭐⭐ | 5.7 & 8.0 |
| 10 | 冗余索引清理 | ⭐⭐ | 5.7 & 8.0 |
| 11 | 前缀索引优化长字符串 | ⭐⭐ | 5.7 & 8.0 |
| 12 | 索引选择性评估 | ⭐⭐ | 5.7 & 8.0 |
| 13 | 不可见索引(8.0) | ⭐⭐ | 8.0+ |
| 14 | 自增主键跳跃与性能 | ⭐⭐ | 5.7 & 8.0 |
二、查询改写(9 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 15 | 子查询改写为 JOIN | ⭐⭐ | 5.7 & 8.0 |
| 16 | COUNT(*) 慢查询优化 | ⭐⭐ | 5.7 & 8.0 |
| 17 | GROUP BY filesort 优化 | ⭐⭐ | 5.7 & 8.0 |
| 18 | 大 IN 列表优化 | ⭐⭐ | 5.7 & 8.0 |
| 19 | EXISTS vs IN | ⭐⭐ | 5.7 & 8.0 |
| 20 | DISTINCT 优化 | ⭐⭐ | 5.7 & 8.0 |
| 21 | NOT IN vs LEFT JOIN IS NULL | ⭐⭐ | 5.7 & 8.0 |
| 22 | UNION vs UNION ALL | ⭐ | 5.7 & 8.0 |
| 23 | ORDER BY LIMIT 无索引优化 | ⭐⭐ | 5.7 & 8.0 |
三、JOIN 优化(7 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 24 | 小表驱动大表 | ⭐⭐ | 5.7 & 8.0 |
| 25 | 被驱动表无索引的灾难 | ⭐⭐ | 5.7 & 8.0 |
| 26 | Hash Join vs BNL | ⭐⭐⭐ | 8.0+ |
| 27 | 多表 JOIN 顺序控制 | ⭐⭐⭐ | 5.7 & 8.0 |
| 28 | 自连接查询优化 | ⭐⭐ | 5.7 & 8.0 |
| 29 | JOIN + GROUP BY 聚合优化 | ⭐⭐⭐ | 5.7 & 8.0 |
| 30 | 派生表物化优化 | ⭐⭐ | 5.7 & 8.0 |
四、DDL 与大表(6 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 31 | 大表加索引 Online DDL | ⭐⭐⭐ | 5.7 & 8.0 |
| 32 | TEXT/BLOB 字段陷阱 | ⭐⭐ | 5.7 & 8.0 |
| 33 | 大表 DELETE 分批 | ⭐⭐ | 5.7 & 8.0 |
| 34 | 分区表 RANGE 分区优化 | ⭐⭐⭐ | 5.7 & 8.0 |
| 35 | 大表批量 INSERT 优化 | ⭐⭐ | 5.7 & 8.0 |
| 36 | OPTIMIZE TABLE 碎片整理 | ⭐⭐ | 5.7 & 8.0 |
五、架构级优化(7 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 37 | 多条件动态筛选索引设计 | ⭐⭐⭐ | 5.7 & 8.0 |
| 38 | 报表统计汇总表 | ⭐⭐ | 5.7 & 8.0 |
| 39 | 冷热数据分离 | ⭐⭐⭐ | 5.7 & 8.0 |
| 40 | 秒杀场景库存扣减 | ⭐⭐⭐ | 5.7 & 8.0 |
| 41 | 读写分离架构 | ⭐⭐⭐ | 5.7 & 8.0 |
| 42 | JSON 字段使用模式 | ⭐⭐ | 8.0+ |
| 43 | 软删除设计模式 | ⭐⭐ | 5.7 & 8.0 |
六、事务与锁(7 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 44 | 死锁排查与分析 | ⭐⭐⭐ | 5.7 & 8.0 |
| 45 | 间隙锁导致插入阻塞 | ⭐⭐⭐ | 5.7 & 8.0 |
| 46 | SELECT FOR UPDATE 锁范围 | ⭐⭐ | 5.7 & 8.0 |
| 47 | 乐观锁与悲观锁对比 | ⭐⭐ | 5.7 & 8.0 |
| 48 | 幻读问题与解决 | ⭐⭐⭐ | 5.7 & 8.0 |
| 49 | 死锁重试与超时处理 | ⭐⭐ | 5.7 & 8.0 |
| 50 | 唯一索引并发插入冲突 | ⭐⭐ | 5.7 & 8.0 |
七、优化器与 8.0 新特性(5 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 51 | 降序索引消除 filesort | ⭐⭐ | 5.7 & 8.0 |
| 52 | 函数索引(8.0) | ⭐⭐ | 8.0+ |
| 53 | 直方图统计优化 | ⭐⭐⭐ | 8.0+ |
| 54 | CTE 递归查询优化 | ⭐⭐ | 8.0+ |
| 55 | 窗口函数替代自连接 | ⭐⭐ | 8.0+ |
难度说明
- ⭐ 入门:理解索引基本原理即可
- ⭐⭐ 进阶:需要理解 EXPLAIN 输出和优化器行为
- ⭐⭐⭐ 高级:涉及架构设计或版本特性差异