加载中...
慢查询优化是数据库性能调优中最直接见效的工作,通过识别执行时间超过阈值的 SQL 语句,分析其执行计划,并通过加索引、改写 SQL、调整配置等手段缩短执行时间,是后端工程师的必备技能。

| 核心工具 | EXPLAIN、慢查询日志、pt-query-digest |
| 常见原因 | 缺索引、索引失效、深分页、大表 JOIN |
| 适用数据库 | MySQL、PostgreSQL(EXPLAIN ANALYZE) |
MySQL 的慢查询日志(slow_query_log)记录执行时间超过 long_query_time(默认10秒,生产建议调为1秒甚至0.1秒)的 SQL。pt-query-digest(Percona Toolkit 中的工具)能将慢查询日志按 SQL 指纹汇总,找出执行次数多且总耗时高的 SQL。
EXPLAIN 是分析单条 SQL 的首选工具,输出中需要关注:type 列(const > eq_ref > ref > range > index > ALL,ALL 意味着全表扫描);rows 列(优化器估算需要检查的行数);Extra 列中的 Using filesort(需要额外排序,可能可以用索引消除)和 Using temporary(用到了临时表)。[1]
慢查询的原因通常集中在以下几类:

| 核心工具 | EXPLAIN、慢查询日志、pt-query-digest |
| 常见原因 | 缺索引、索引失效、深分页、大表 JOIN |
| 适用数据库 | MySQL、PostgreSQL(EXPLAIN ANALYZE) |
登录 后参与讨论
暂无讨论,来发表第一条评论吧