Postgresql 为什么计划时间和执行时间如此不同?
我提出这样的疑问Postgresql 为什么计划时间和执行时间如此不同?,postgresql,query-planner,Postgresql,Query Planner,我提出这样的疑问 EXPLAIN (ANALYZE ,BUFFERS ) SELECT COUNT(id) q, day FROM my_table WHERE role_id && ARRAY[15, 17] GROUP BY "day" ORDER BY "day" DESC; 博士后对我的回答是: 计划时间:0.286毫秒 执行时间:127.233毫秒 为什么会这样?差异太大了,我认为解释分析
EXPLAIN (ANALYZE ,BUFFERS )
SELECT COUNT(id) q, day
FROM my_table
WHERE role_id && ARRAY[15, 17]
GROUP BY "day"
ORDER BY "day" DESC;
博士后对我的回答是:
计划时间:0.286毫秒执行时间:127.233毫秒
为什么会这样?差异太大了,我认为解释分析命令做了两件事:它计算出计算查询计划所需的Postgres时间;其次,它确定执行查询所需的时间。预计提出查询计划要比执行查询本身快得多。如果您提供了
EXECUTE
命令的完整输出,可能会给出更好的解释。文档中包含了一个相当复杂的问题。我认为您有一点误解。我试着简要描述一下运行查询时发生的情况:
EXPLAIN
命令打印该过程的描述。现在:
- 解释上的执行时间输出是服务器在步骤3-4上花费的时间李>
- 在
输出是服务器仅在步骤2上花费的时间。我相信您会将其视为“时间规划师认为查询需要花费的时间”,但这可以称为“计划[执行]时间”或“估计执行时间”解释上的计划时间
注意:执行时间不包括计划时间,您可以尝试
explain-analysis-select 1
查看PlanningTime>ExecutionTime
您认为这是为什么?为什么你认为计划时间和执行时间之间应该有关系?很抱歉,我认为这是错误的。简单的回答是:计划时间不是预期的执行时间,而是用来猜测如何执行查询的时间。我对它的理解也是错误的。它是ANALYZE
而不是ANALYZE
@Gabriel'sMessanger:两者都是valid@a_horse_with_no_name谢谢,我不知道。PostgreSQL让英语和美式英语都很舒服。分析和分析都是有效的。当使用解释命令时,总查询运行时
在历史上意味着什么
@Gabriel's Messanger-极好的回答-礼貌、彻底、易于理解,并带有文档链接。:)注意,执行时间不包括步骤2。我见过解释时间比执行时间高,所以它们不会重叠。