SQL 慢查询如何处理¶
一、定位¶
1. 开启慢查询日志¶
2. EXPLAIN¶
看 type、key、rows、Extra。
二、常见原因¶
- 没索引或索引失效。
- SELECT *。
- 关联查询太多 JOIN。
- 数据量太大。
- 服务器资源不足。
三、优化¶
1. 加索引¶
WHERE、ORDER BY、JOIN 字段加索引。
2. 避免索引失效¶
- 不用函数:
WHERE DATE(create_time) = ... - 不用隐式转换。
- LIKE 不以 % 开头。
- 联合索引遵守最左前缀。
3. 小结果集驱动大结果集¶
4. 分页优化¶
5. 拆分大 SQL¶
6. 读写分离¶
7. 分库分表¶
四、工具¶
- explain:看执行计划。
- show profile:看执行耗时。
- mysqldumpslow:分析慢日志。
流程
慢查询日志 → explain → 找原因 → 加索引/改 SQL → 验证。