项目介绍
这是什么
SQL Lab 是一套以 MySQL 为主要场景的 SQL 优化实战案例集。
与同类项目不同的是,这里的每个案例都满足三个硬性标准:
- 能跑 —— 提供 Docker 环境和百万级种子数据,你可以在 30 秒内一键复现
- 能量化 —— 给出优化前后的 EXPLAIN 对比,用扫描行数和耗时说话
- 贴近生产 —— 每个案例都源于真实的业务场景,不是教科书式空谈
为什么做这个
网上不缺 SQL 优化的文章,但大多有两个问题:
- 只讲不练:贴一段 SQL 说"这样慢,那样快",但读者无法验证,也看不到真实的 EXPLAIN 结果
- 脱离场景:按"索引原理""查询优化"分章,但生产中遇到的问题是"订单列表翻到第 10 万页慢了",两者之间有认知鸿沟
本项目试图弥合这个鸿沟:给你一个能跑的环境,用真实数据量验证每个优化结论。
适合谁
- 后端开发工程师,想写出不拖垮数据库的 SQL
- DBA,需要一套可复现的优化案例作为团队培训材料
- 面试备战,想深入理解 EXPLAIN 和索引原理
- 技术团队,想要一个可贡献、可沉淀的优化知识库
案例一览
共 55 个精选案例,覆盖七大场景:
| 分类 | 案例数 | 典型场景 |
|---|---|---|
| 索引设计与失效 | 14 | 深分页、类型转换、覆盖索引、ICP、冗余索引、前缀索引 |
| 查询改写 | 9 | 子查询改 JOIN、GROUP BY、大 IN 列表、DISTINCT、NOT IN |
| JOIN 优化 | 7 | 小表驱动大表、Hash Join、JOIN 顺序、自连接、派生表 |
| DDL 与大表 | 6 | Online DDL、大表 DELETE、BLOB 陷阱、分区表、碎片整理 |
| 架构级优化 | 7 | 动态筛选、汇总表、冷热分离、秒杀、读写分离、JSON、软删除 |
| 事务与锁 | 7 | 死锁、间隙锁、FOR UPDATE、乐观/悲观锁、幻读 |
| 优化器与 8.0 新特性 | 5 | 降序索引、函数索引、直方图、CTE 递归、窗口函数 |
详见左侧侧边栏,或直接 快速开始。
技术栈
- 数据库: MySQL 5.7 + 8.0(Docker 同时运行)
- 文档站: VitePress,部署于 GitHub Pages
- AI 对话: DeepWiki,可与仓库内容对话
开源协议
MIT License —— 自由使用、修改、分发。