【发布时间】:2020-07-05 18:01:03
【问题描述】:
我有一个查询,我按具有非常大字段(大多数有数千个字符)的列进行分组并看到性能下降。按其他较小的列分组对性能没有成比例的影响。
我的直觉是 group by 是基于散列的,所以大小无关紧要(我找不到关于幕后行为的文档)
这里是否还有其他因素在起作用,或者字段大小是否会以某种方式影响小组的表现?
【问题讨论】:
-
请edit您的问题并添加使用
explain (analyze, buffers, format text)生成的execution plan(不是只是一个“简单”解释)为formatted text,并确保保留计划的缩进。粘贴文本,然后将```放在计划前一行和计划后一行。还请包括所有索引的完整create index语句。 -
Group by 可以使用散列或排序。当然,无论哪种方式,一个巨大的列都会增加开销,哈希可能更糟(所有乘法和加法的成本都会增加,而比较可以在第一个不同的字节上完成)。如果 group by 中有多个列,则首先放置较小的列可能会有所帮助。
标签: sql postgresql performance