【发布时间】:2014-04-15 21:32:51
【问题描述】:
我刚刚发现join_collapse_limit 一直在阻止 PostgreSQL 规划器找到更好的连接顺序。在我的例子中,将限制增加到 10(从默认值 8)允许规划器将搜索时间从大约 30 秒缩短到大约 1 毫秒,这更容易接受。
文档建议将此“设置得太高”可能会导致规划时间过长,但甚至没有提供关于规划步骤对于各种值可能需要多长时间的“经验法则”。我知道一般问题在时间上是指数级的,但我找不到确定实际计划时间的方法,除非它只是运行ANALYZE SELECT ... 所需的时间。如果是这样的话,我相信现代计算机的默认值 8 是相当低的,因为我发现 8 和 10 之间的规划速度没有差异。
问题:
1) 如何衡量计划时间?
2) 大约,join_collapse_limit 可以达到多高,并且仍然预计计划花费不到几百毫秒?
【问题讨论】:
-
PostgreSQL 9.4 报告计划时间。在旧版本中,使用
psql,启用\timing,并使用EXPLAIN SELECT ...
标签: postgresql join optimization settings