Skip to content

案例总览

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

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

#案例难度版本
01深度分页 LIMIT 大偏移⭐⭐5.7 & 8.0
02联合索引最左前缀失效5.7 & 8.0
03隐式类型转换致索引失效⭐⭐5.7 & 8.0
04函数操作致索引失效⭐⭐5.7 & 8.0
05LIKE 前导通配符致索引失效5.7 & 8.0
06OR 条件与索引合并⭐⭐5.7 & 8.0
07范围查询后列索引失效⭐⭐5.7 & 8.0
08覆盖索引避免回表⭐⭐5.7 & 8.0
09索引下推 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
103自适应哈希索引 AHI 调优⭐⭐⭐5.7 & 8.0
104Change Buffer 二级索引写入加速⭐⭐⭐5.7 & 8.0

二、查询改写(15 个)

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

三、JOIN 优化(9 个)

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

四、DDL 与大表(11 个)

#案例难度版本
42大表加索引 Online DDL⭐⭐⭐5.7 & 8.0
43TEXT/BLOB 字段性能陷阱⭐⭐5.7 & 8.0
44大表 DELETE 分批⭐⭐5.7 & 8.0
45分区表 RANGE 分区优化⭐⭐⭐5.7 & 8.0
46大表批量 INSERT 优化⭐⭐5.7 & 8.0
47OPTIMIZE TABLE 碎片整理⭐⭐5.7 & 8.0
48大表加列默认值 INSTANT 秒级完成⭐⭐5.7 & 8.0
49修改字段类型的锁行为差异⭐⭐⭐5.7 & 8.0
50大字段垂直拆表⭐⭐5.7 & 8.0
51字段类型与长度选择最佳实践⭐⭐5.7 & 8.0
105SELECT INTO OUTFILE 大数据导出与安全⭐⭐5.7 & 8.0

五、架构级优化(14 个)

#案例难度版本
52多条件动态筛选索引设计⭐⭐⭐5.7 & 8.0
53报表统计汇总表⭐⭐5.7 & 8.0
54冷热数据分离⭐⭐⭐5.7 & 8.0
55秒杀场景库存扣减⭐⭐⭐5.7 & 8.0
56读写分离架构⭐⭐⭐5.7 & 8.0
57JSON 字段使用模式⭐⭐8.0+
58软删除设计模式⭐⭐5.7 & 8.0
59分库分表路由策略⭐⭐⭐5.7 & 8.0
60缓存穿透与布隆过滤器⭐⭐⭐5.7 & 8.0
61自增主键耗尽与分布式 ID⭐⭐⭐5.7 & 8.0
62连接池与 max_connections 耗尽诊断⭐⭐5.7 & 8.0
107HikariCP/Druid 连接池参数调优⭐⭐⭐5.7 & 8.0
108InnoDB Buffer Pool 调优⭐⭐⭐5.7 & 8.0
110MySQL 重启后 Buffer Pool 冷启动预热⭐⭐⭐5.7 & 8.0

六、事务与锁(11 个)

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

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

#案例难度版本
72降序索引消除 filesort⭐⭐5.7 & 8.0
73函数索引优化 DATE 函数查询⭐⭐8.0+
74直方图统计优化选错索引⭐⭐⭐8.0+
75CTE 递归查询优化树形结构⭐⭐8.0+
76窗口函数替代相关子查询⭐⭐8.0+
77优化器 Hint 实战⭐⭐5.7 & 8.0
78派生条件下推优化⭐⭐⭐5.7 & 8.0
79大批量 UPDATE 分批优化⭐⭐5.7 & 8.0
80慢查询排查方法论⭐⭐⭐5.7 & 8.0
111MySQL 8.0 并行查询 (Parallel Execution)⭐⭐⭐8.0.27+

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

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

难度说明

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

MIT Licensed