-
前言
- 为什么线上服务经常遇到慢 SQL
- DBA 的经典建议:“先看索引,再看 SQL,再看架构”
-
如何定位慢查询
- MySQL
slow_query_log EXPLAIN分析执行计划- 常见导致慢 SQL 的场景(全表扫描、索引失效、join 过多等)
- MySQL
-
索引优化实战
-
单列索引 vs 复合索引
-
索引最左前缀原则
-
覆盖索引
-
案例演示:
SELECT * FROM user WHERE status = 1 AND age > 18 ORDER BY created_at DESC;如何通过复合索引
(status, age, created_at)提升性能
-
-
SQL 优化技巧
- 避免
SELECT * - 使用
LIMIT+ 合适的索引 - 分页优化(
id > last_id替代OFFSET)
- 避免
-
架构层面的优化
- 读写分离
- 分库分表
- 缓存(Redis)
-
总结
- 索引不是越多越好
- 调优要结合业务查询特点
- 工程化思维:慢 SQL 监控告警 + 自动分析