首页/数据/SQL 速查/PostgreSQL EXPLAIN 基础与 cost 解读
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

PostgreSQL EXPLAIN 基础与 cost 解读

PG 的 EXPLAIN 输出计划树与启动/总成本估算:cost 是统计模型下的抽象单位,用于比较不同计划而非预测耗时。

SQL 速查数据更新于 2026-10-12

示例

示例
EXPLAIN SELECT * FROM orders WHERE user_id = 100;

-- 输出示例:
-- Index Scan using idx_orders_user on orders  (cost=0.43..16.85 rows=10 width=64)
--   Index Cond: (user_id = 100)

-- 组合选项
EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM orders WHERE user_id = 100;
cost=0.43..16.85启动成本..总成本;启动成本是返回首行前的开销
rows预估返回行数(不是扫描行数)
width预估输出行平均字节数
计划树缩进层级表示父子关系:下层先算,上层消费下层结果
cost 与 seq_page_cost、random_page_cost 等参数相关:只适合同一实例上的计划横向比较。

易错点

  • 把 cost 数值当耗时看:它是统计模型给出的相对代价,不等同于毫秒
  • 只做 EXPLAIN 不实测:估算偏差大时要用 EXPLAIN ANALYZE 对照实际 rows 与耗时

数据来源与参考

  • PostgreSQL Documentation §14.1 Using EXPLAIN
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌