EXPLAIN
是一个用于显示语句执行计划的实用命令。
EXPLAIN
一直存在于 PostgreSQL 中。
用法
EXPLAIN
可用于显示以下任一语句类型的执行计划:
EXPLAIN 选项
PostgreSQL 版本可用选项概览
19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ANALYZE |
|||||||||||||||||||||||||
BUFFERS |
|||||||||||||||||||||||||
COSTS |
|||||||||||||||||||||||||
FORMAT |
|||||||||||||||||||||||||
GENERIC_PLAN |
|||||||||||||||||||||||||
MEMORY |
|||||||||||||||||||||||||
SERIALIZE |
|||||||||||||||||||||||||
SETTINGS |
|||||||||||||||||||||||||
SUMMARY |
|||||||||||||||||||||||||
TIMING |
|||||||||||||||||||||||||
VERBOSE |
|||||||||||||||||||||||||
WAL |
变更历史
- PostgreSQL 19
- 现在显示 memoize planner 估算 (commit 4bc62b86)
- PostgreSQL 18
- PostgreSQL 17
- PostgreSQL 16
- 添加了
GENERIC_PLAN
选项 (commit 3c05284d)
- 添加了
- PostgreSQL 15
- 跟踪了临时文件块的 I/O 时间 (commit efb0ef90)
- PostgreSQL 14
- 如果
compute_query_id
没有被禁用,EXPLAIN VERBOSE
现在将显示查询标识符 (commit 4f0b0966)
- 如果
- PostgreSQL 13
- 添加了
WAL
选项 (commit 33e05f89)
- 添加了
- PostgreSQL 12
- 添加了
SETTINGS
选项 (commit ea569d64)
- 添加了
- PostgreSQL 11
- 在输出中显示并行工作进程的排序活动 (commit bf11e7ee)
- PostgreSQL 10
- 添加了
SUMMARY
选项 (commit f9b1a0dd)
- 添加了
- PostgreSQL 9.4
- PostgreSQL 9.2
- 添加了
TIMING
选项 (commit af7914c6)
- 添加了
- PostgreSQL 9.0
- PostgreSQL 8.4
VERBOSE
选项现在打印每个计划节点的 target list,而不是转储内部表示 (commit 87a2f050)
- PostgreSQL 7.2
- 添加了
ANALYZE
选项 (commit 89fa5518)
- 添加了
示例
EXPLAIN
的最小使用示例
postgres=# EXPLAIN SELECT * FROM bar; QUERY PLAN ------------------------------------------------------- Seq Scan on bar (cost=0.00..35.50 rows=2550 width=4) (1 row)
尝试使用不支持的查询类型执行 EXPLAIN
postgres=# EXPLAIN COPY bar FROM STDIN; ERROR: syntax error at or near "COPY" LINE 1: EXPLAIN COPY bar FROM STDIN;
参考资料
- PostgreSQL documentation: EXPLAIN
- PostgreSQL documentation: Using EXPLAIN
有用链接
- explain.dalibo.com - Dalibo 的在线 EXPLAIN 输出可视化工具
- explain.depesz.com - Hubert 'depesz' Lubaczewski 的在线 EXPLAIN 输出可视化工具
- PostgreSQL Explain - pgMustard 项目提供的有用且广泛的术语表