【发布时间】:2019-12-02 11:37:49
【问题描述】:
我在查询中使用 CTE 时遇到性能问题。
这些查询很大,但它们之间的唯一区别是在IN 子句中侦听的 ID 数量。
第一个在IN 子句中包含 2000 个 ID,第二个只有 1000 个。
第一个执行时间约为33s,第二个 - 500ms。
我也尝试增加/减少 ID 的数量,但无法找到性能下降的关键数字。
3000 个 ID - 36 秒
4000 个 ID - 39 秒
所以它不会线性增长,在 1000 到 2000 个 ID 之间的某个位置是那个关键点,但原因是什么?
为他们分析:
第一个(慢一个)
https://gist.github.com/DonKeyHot1/7251adab3ca589c55ebead2ba75fbcf1
第二(快一)
https://gist.github.com/DonKeyHot1/48d85eaeeb84316bb43adf50114914d3
(它们太大,无法在此处发布)
【问题讨论】:
标签: sql postgresql performance common-table-expression postgresql-11