Skip to content

案例总览 ​

共 116 个精选案例,覆盖 MySQL + TiDB 优化的八大核心场景。每个案例都带真实数据,可一键复现。

一、索引设计与失效(20 个) ​

#案例难度版本
1深度分页 LIMIT 大偏移⭐⭐5.7 & 8.0
2联合索引最左前缀失效⭐5.7 & 8.0
3隐式类型转换致索引失效⭐⭐5.7 & 8.0
4函数操作致索引失效⭐⭐5.7 & 8.0
5LIKE 前导通配符致索引失效⭐5.7 & 8.0
6OR 条件与索引合并⭐⭐5.7 & 8.0
7范围查询后列索引失效⭐⭐5.7 & 8.0
8覆盖索引避免回表⭐⭐5.7 & 8.0
9索引下推 ICP(Index Condition Pushdown)⭐⭐⭐5.6 & 5.7 & 8.0
10冗余索引清理⭐⭐5.7 & 8.0
11前缀索引优化长字符串⭐⭐5.7 & 8.0
12索引选择性评估⭐⭐5.7 & 8.0
13不可见索引 Invisible Index⭐⭐8.0+
14自增主键跳跃与性能⭐⭐5.7 & 8.0
15索引合并 Index Merge 陷阱⭐⭐5.7 & 8.0
16索引跳跃扫描 Skip Scan⭐⭐8.0+
17游标分页替代深分页⭐⭐5.7 & 8.0
18全文索引 FULLTEXT 替代 LIKE⭐⭐5.7 & 8.0
19自适应哈希索引 AHI 调优⭐⭐⭐5.7 & 8.0
20Change Buffer 二级索引写入加速⭐⭐⭐5.7 & 8.0

二、查询改写(15 个) ​

#案例难度版本
21子查询改写为 JOIN⭐⭐5.7 & 8.0
22COUNT(*) 慢查询优化⭐⭐5.7 & 8.0
23GROUP BY filesort 优化⭐⭐5.7 & 8.0
24大 IN 列表优化⭐⭐5.7 & 8.0
25EXISTS vs IN 选择⭐⭐5.7 & 8.0
26DISTINCT 优化⭐⭐5.7 & 8.0
27NOT IN vs LEFT JOIN IS NULL⭐⭐5.7 & 8.0
28UNION vs UNION ALL⭐5.7 & 8.0
29ORDER BY LIMIT 无索引优化⭐⭐5.7 & 8.0
30HAVING 改 WHERE 提前过滤⭐5.7 & 8.0
31LIMIT 1 优化 EXISTS 子查询⭐⭐5.7 & 8.0
32时区与 TIMESTAMP vs DATETIME⭐⭐5.7 & 8.0
33时间格式使用错误与最佳实践⭐⭐5.7 & 8.0
34SQL 反模式与正确写法量化对比⭐⭐5.7 & 8.0
35EXPLAIN FORMAT=JSON 详细成本树解读⭐⭐⭐5.7 & 8.0

三、JOIN 优化(9 个) ​

#案例难度版本
36JOIN 小表驱动大表⭐⭐5.7 & 8.0
37被驱动表无索引的灾难⭐⭐5.7 & 8.0
38Hash Join vs BNL⭐⭐⭐5.7 & 8.0
39多表 JOIN 顺序控制⭐⭐⭐5.7 & 8.0
40自连接查询优化⭐⭐5.7 & 8.0
41JOIN + GROUP BY 聚合优化⭐⭐⭐5.7 & 8.0
42派生表物化优化⭐⭐5.7 & 8.0
43STRAIGHT_JOIN 强制驱动顺序⭐⭐⭐5.7 & 8.0
44LEFT JOIN 改 INNER JOIN 释放优化器⭐⭐5.7 & 8.0

四、DDL 与大表(14 个) ​

#案例难度版本
45大表加索引 Online DDL⭐⭐⭐5.7 & 8.0
46大表增删列 INSTANT 操作全解⭐⭐⭐5.7 & 8.0
47TEXT/BLOB 字段性能陷阱⭐⭐5.7 & 8.0
48大表 DELETE 分批⭐⭐5.7 & 8.0
49分区表 RANGE 分区优化⭐⭐⭐5.7 & 8.0
50大表批量 INSERT 优化⭐⭐5.7 & 8.0
51OPTIMIZE TABLE 碎片整理⭐⭐5.7 & 8.0
52大表加列默认值 INSTANT 秒级完成⭐⭐5.7 & 8.0
53修改字段类型的锁行为差异⭐⭐⭐5.7 & 8.0
54大字段垂直拆表⭐⭐5.7 & 8.0
55字段类型与长度选择最佳实践⭐⭐5.7 & 8.0
56数据建模方法论与建表清单⭐⭐⭐5.7 & 8.0
57设计决策背后的理论依据⭐⭐⭐5.7 & 8.0
58SELECT INTO OUTFILE 大数据导出与安全⭐⭐5.7 & 8.0

五、架构级优化(15 个) ​

#案例难度版本
59多条件动态筛选索引设计⭐⭐⭐5.7 & 8.0
60报表统计汇总表⭐⭐5.7 & 8.0
61冷热数据分离⭐⭐⭐5.7 & 8.0
62秒杀场景库存扣减⭐⭐⭐5.7 & 8.0
63读写分离架构⭐⭐⭐5.7 & 8.0
64JSON 字段使用模式⭐⭐8.0+
65软删除设计模式⭐⭐5.7 & 8.0
66分库分表路由策略⭐⭐⭐5.7 & 8.0
67缓存穿透与布隆过滤器⭐⭐⭐5.7 & 8.0
68自增主键耗尽与分布式 ID⭐⭐⭐5.7 & 8.0
69自增序列 8 个坑全景手册⭐⭐⭐5.7 & 8.0
70连接池与 max_connections 耗尽诊断⭐⭐5.7 & 8.0
71HikariCP/Druid 连接池参数调优⭐⭐⭐5.7 & 8.0
72InnoDB Buffer Pool 调优⭐⭐⭐5.7 & 8.0
73MySQL 重启后 Buffer Pool 冷启动预热⭐⭐⭐5.7 & 8.0

六、事务与锁(11 个) ​

#案例难度版本
74死锁排查与分析⭐⭐⭐5.7 & 8.0
75间隙锁导致插入阻塞⭐⭐⭐5.7 & 8.0
76SELECT FOR UPDATE 锁范围⭐⭐5.7 & 8.0
77乐观锁与悲观锁对比⭐⭐5.7 & 8.0
78幻读问题与解决⭐⭐⭐5.7 & 8.0
79死锁重试与超时处理⭐⭐5.7 & 8.0
80唯一索引并发插入冲突⭐⭐5.7 & 8.0
81长事务危害⭐⭐5.7 & 8.0
82RC vs RR 隔离级别锁行为差异⭐⭐⭐5.7 & 8.0
83undo 表空间膨胀与 Purge 调优⭐⭐⭐5.7 & 8.0
84通用慢查询排查与锁等待定位⭐⭐⭐5.7 & 8.0

七、优化器与 8.0 新特性(10 个) ​

#案例难度版本
85降序索引消除 filesort⭐⭐5.7 & 8.0
86函数索引优化 DATE 函数查询⭐⭐8.0+
87直方图统计优化选错索引⭐⭐⭐8.0+
88CTE 递归查询优化树形结构⭐⭐8.0+
89窗口函数替代相关子查询⭐⭐8.0+
90优化器 Hint 实战⭐⭐5.7 & 8.0
91派生条件下推优化⭐⭐⭐5.7 & 8.0
92大批量 UPDATE 分批优化⭐⭐5.7 & 8.0
93慢查询排查方法论⭐⭐⭐5.7 & 8.0
94MySQL 8.0 并行查询 (Parallel Execution)⭐⭐⭐8.0.27+

八、TiDB 分布式优化(22 个) ​

#案例难度版本
95TiDB EXPLAIN 算子树解读⭐⭐TiDB
96协处理器下推优化⭐⭐⭐TiDB
97AUTO_RANDOM 避免写热点⭐⭐TiDB
98TiDB 统计信息管理⭐⭐⭐TiDB
99TiDB 事务模型对比⭐⭐⭐TiDB
100IndexLookUp 回表与覆盖索引⭐⭐TiDB
101TiFlash 列存与 MPP 分析加速⭐⭐⭐TiDB
102TiDB GC 机制与长事务影响⭐⭐⭐TiDB
103Follower Read 读写分离⭐⭐TiDB
104TiDB 内存控制与 OOM 防护⭐⭐⭐TiDB
105TiDB Join 算法选择⭐⭐⭐TiDB
106TiDB 在线 DDL 机制⭐⭐TiDB
107TiDB Plan Cache 执行计划缓存⭐⭐TiDB
108TiDB Stale Read 历史读优化⭐⭐TiDB
109Region 热点调度与 Split 策略⭐⭐⭐TiDB
110SQL Binding 执行计划锁定 (SPM)⭐⭐⭐TiDB
111TiDB 分区表优化⭐⭐TiDB
112TiDB Dashboard 诊断实战⭐⭐TiDB
113TiDB 锁机制深度解析⭐⭐⭐TiDB
114分布式 Sequence 自增方案⭐⭐TiDB
115TiDB CTE 与临时表优化⭐⭐TiDB
116TiDB Cost Model 与优化器 Hint 进阶⭐⭐⭐TiDB

难度说明

  • ⭐ 入门:理解索引基本原理即可
  • ⭐⭐ 进阶:需要理解 EXPLAIN 输出和优化器行为
  • ⭐⭐⭐ 高级:涉及架构设计或版本特性差异

MIT Licensed