Skip to content

项目介绍

这是什么

SQL Lab 是一套以 MySQL 为主要场景的 SQL 优化实战案例集。

与同类项目不同的是,这里的每个案例都满足三个硬性标准:

  1. 能跑 —— 提供 Docker 环境和百万级种子数据,你可以在 30 秒内一键复现
  2. 能量化 —— 给出优化前后的 EXPLAIN 对比,用扫描行数和耗时说话
  3. 贴近生产 —— 每个案例都源于真实的业务场景,不是教科书式空谈

为什么做这个

网上不缺 SQL 优化的文章,但大多有两个问题:

  • 只讲不练:贴一段 SQL 说"这样慢,那样快",但读者无法验证,也看不到真实的 EXPLAIN 结果
  • 脱离场景:按"索引原理""查询优化"分章,但生产中遇到的问题是"订单列表翻到第 10 万页慢了",两者之间有认知鸿沟

本项目试图弥合这个鸿沟:给你一个能跑的环境,用真实数据量验证每个优化结论

适合谁

  • 后端开发工程师,想写出不拖垮数据库的 SQL
  • DBA,需要一套可复现的优化案例作为团队培训材料
  • 面试备战,想深入理解 EXPLAIN 和索引原理
  • 技术团队,想要一个可贡献、可沉淀的优化知识库

案例一览

55 个精选案例,覆盖七大场景:

分类案例数典型场景
索引设计与失效14深分页、类型转换、覆盖索引、ICP、冗余索引、前缀索引
查询改写9子查询改 JOIN、GROUP BY、大 IN 列表、DISTINCT、NOT IN
JOIN 优化7小表驱动大表、Hash Join、JOIN 顺序、自连接、派生表
DDL 与大表6Online 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 —— 自由使用、修改、分发。

MIT Licensed