发布于 2026-09-10T10:59:47.511054Z · Radim Marek · boringsql.com

去重聚合没有合并函数,工作进程无法把各自的去重结果拼起来,于是这一个关键字就让整条语句退回串行。Radim Marek 的改法是把去重下推成 GROUP BY,先在子查询里按列分组再数行数,这样可以走并行哈希。在 1000 万行的表上,串行去重聚合耗时 1211 毫秒并落盘 115 MB,改写后只要 360 毫秒且全在内存,快约 3.4 倍。要近似值可以用 postgresql-hll。
去重聚合没有合并函数,工作进程无法把各自的去重结果拼起来,于是这一个关键字就让整条语句退回串行。Radim Marek 的改法是把去重下推成 GROUP BY,先在子查询里按列分组再数行数,这样可以走并行哈希。在 1000 万行的表上,串行去重聚合耗时 1211 毫秒并落盘 115 MB,改写后只要 360 毫秒且全在内存,快约 3.4 倍。要近似值可以用 postgresql-hll。
来源记录
- center.info_item · 1162075bce76e8bd · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · 1162075bce76e8bd · 2026-10-03T04:08:55.967155Z