案例总览
共 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 |
| 05 | LIKE 前导通配符致索引失效 | ⭐ | 5.7 & 8.0 |
| 06 | OR 条件与索引合并 | ⭐⭐ | 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 |
| 104 | Change Buffer 二级索引写入加速 | ⭐⭐⭐ | 5.7 & 8.0 |
二、查询改写(15 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 19 | 子查询改写为 JOIN | ⭐⭐ | 5.7 & 8.0 |
| 20 | COUNT(*) 慢查询优化 | ⭐⭐ | 5.7 & 8.0 |
| 21 | GROUP BY filesort 优化 | ⭐⭐ | 5.7 & 8.0 |
| 22 | 大 IN 列表优化 | ⭐⭐ | 5.7 & 8.0 |
| 23 | EXISTS vs IN 选择 | ⭐⭐ | 5.7 & 8.0 |
| 24 | DISTINCT 优化 | ⭐⭐ | 5.7 & 8.0 |
| 25 | NOT IN vs LEFT JOIN IS NULL | ⭐⭐ | 5.7 & 8.0 |
| 26 | UNION vs UNION ALL | ⭐ | 5.7 & 8.0 |
| 27 | ORDER BY LIMIT 无索引优化 | ⭐⭐ | 5.7 & 8.0 |
| 28 | HAVING 改 WHERE 提前过滤 | ⭐ | 5.7 & 8.0 |
| 29 | LIMIT 1 优化 EXISTS 子查询 | ⭐⭐ | 5.7 & 8.0 |
| 30 | 时区与 TIMESTAMP vs DATETIME | ⭐⭐ | 5.7 & 8.0 |
| 31 | 时间格式使用错误与最佳实践 | ⭐⭐ | 5.7 & 8.0 |
| 32 | SQL 反模式与正确写法量化对比 | ⭐⭐ | 5.7 & 8.0 |
| 106 | EXPLAIN FORMAT=JSON 详细成本树解读 | ⭐⭐⭐ | 5.7 & 8.0 |
三、JOIN 优化(9 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 33 | JOIN 小表驱动大表 | ⭐⭐ | 5.7 & 8.0 |
| 34 | 被驱动表无索引的灾难 | ⭐⭐ | 5.7 & 8.0 |
| 35 | Hash Join vs BNL | ⭐⭐⭐ | 5.7 & 8.0 |
| 36 | 多表 JOIN 顺序控制 | ⭐⭐⭐ | 5.7 & 8.0 |
| 37 | 自连接查询优化 | ⭐⭐ | 5.7 & 8.0 |
| 38 | JOIN + GROUP BY 聚合优化 | ⭐⭐⭐ | 5.7 & 8.0 |
| 39 | 派生表物化优化 | ⭐⭐ | 5.7 & 8.0 |
| 40 | STRAIGHT_JOIN 强制驱动顺序 | ⭐⭐⭐ | 5.7 & 8.0 |
| 41 | LEFT JOIN 改 INNER JOIN 释放优化器 | ⭐⭐ | 5.7 & 8.0 |
四、DDL 与大表(11 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 42 | 大表加索引 Online DDL | ⭐⭐⭐ | 5.7 & 8.0 |
| 43 | TEXT/BLOB 字段性能陷阱 | ⭐⭐ | 5.7 & 8.0 |
| 44 | 大表 DELETE 分批 | ⭐⭐ | 5.7 & 8.0 |
| 45 | 分区表 RANGE 分区优化 | ⭐⭐⭐ | 5.7 & 8.0 |
| 46 | 大表批量 INSERT 优化 | ⭐⭐ | 5.7 & 8.0 |
| 47 | OPTIMIZE 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 |
| 105 | SELECT 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 |
| 57 | JSON 字段使用模式 | ⭐⭐ | 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 |
| 107 | HikariCP/Druid 连接池参数调优 | ⭐⭐⭐ | 5.7 & 8.0 |
| 108 | InnoDB Buffer Pool 调优 | ⭐⭐⭐ | 5.7 & 8.0 |
| 110 | MySQL 重启后 Buffer Pool 冷启动预热 | ⭐⭐⭐ | 5.7 & 8.0 |
六、事务与锁(11 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 63 | 死锁排查与分析 | ⭐⭐⭐ | 5.7 & 8.0 |
| 64 | 间隙锁导致插入阻塞 | ⭐⭐⭐ | 5.7 & 8.0 |
| 65 | SELECT 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 |
| 71 | RC vs RR 隔离级别锁行为差异 | ⭐⭐⭐ | 5.7 & 8.0 |
| 109 | undo 表空间膨胀与 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+ |
| 75 | CTE 递归查询优化树形结构 | ⭐⭐ | 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 |
| 111 | MySQL 8.0 并行查询 (Parallel Execution) | ⭐⭐⭐ | 8.0.27+ |
八、TiDB 分布式优化(22 个)
| # | 案例 | 难度 | 版本 |
|---|---|---|---|
| 81 | TiDB EXPLAIN 算子树解读 | ⭐⭐ | TiDB |
| 82 | 协处理器下推优化 | ⭐⭐⭐ | TiDB |
| 83 | AUTO_RANDOM 避免写热点 | ⭐⭐ | TiDB |
| 84 | TiDB 统计信息管理 | ⭐⭐⭐ | TiDB |
| 85 | TiDB 事务模型对比 | ⭐⭐⭐ | TiDB |
| 86 | IndexLookUp 回表与覆盖索引 | ⭐⭐ | TiDB |
| 87 | TiFlash 列存与 MPP 分析加速 | ⭐⭐⭐ | TiDB |
| 88 | TiDB GC 机制与长事务影响 | ⭐⭐⭐ | TiDB |
| 89 | Follower Read 读写分离 | ⭐⭐ | TiDB |
| 90 | TiDB 内存控制与 OOM 防护 | ⭐⭐⭐ | TiDB |
| 91 | TiDB Join 算法选择 | ⭐⭐⭐ | TiDB |
| 92 | TiDB 在线 DDL 机制 | ⭐⭐ | TiDB |
| 93 | TiDB Plan Cache 执行计划缓存 | ⭐⭐ | TiDB |
| 94 | TiDB Stale Read 历史读优化 | ⭐⭐ | TiDB |
| 95 | Region 热点调度与 Split 策略 | ⭐⭐⭐ | TiDB |
| 96 | SQL Binding 执行计划锁定 (SPM) | ⭐⭐⭐ | TiDB |
| 97 | TiDB 分区表优化 | ⭐⭐ | TiDB |
| 98 | TiDB Dashboard 诊断实战 | ⭐⭐ | TiDB |
| 99 | TiDB 锁机制深度解析 | ⭐⭐⭐ | TiDB |
| 100 | 分布式 Sequence 自增方案 | ⭐⭐ | TiDB |
| 101 | TiDB CTE 与临时表优化 | ⭐⭐ | TiDB |
| 102 | TiDB Cost Model 与优化器 Hint 进阶 | ⭐⭐⭐ | TiDB |
难度说明
- ⭐ 入门:理解索引基本原理即可
- ⭐⭐ 进阶:需要理解 EXPLAIN 输出和优化器行为
- ⭐⭐⭐ 高级:涉及架构设计或版本特性差异