You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中同一查询内的percentile_disc是否复用分组计算结果?

PostgreSQL中多个相同分组规则的percentile_disc是否复用计算结果?

问题场景

用户提供的示例SQL:

SELECT percentile_disc(0.25) WITHIN GROUP (ORDER BY my_col) as p25,
       percentile_disc(0.75) WITHIN GROUP (ORDER BY my_col) as p75 from my_table

疑问:计算第二个percentile_disc(0.75)时,是否会复用第一个函数的分组/排序计算结果?

回答

PostgreSQL的查询优化器会识别到这两个percentile_disc函数使用了完全相同的WITHIN GROUP (ORDER BY my_col)规则,因此只会对my_col执行一次排序操作,之后基于这份排序好的数据集来计算两个百分位数。

也就是说,第二个percentile_disc不会重复执行分组内的排序计算,而是直接复用第一次排序后的结果,以此提升查询效率,避免不必要的重复运算。

你可以通过执行EXPLAIN ANALYZE查看查询计划来验证:计划里只会出现一次针对my_col的排序步骤,而非两次。


内容的提问来源于stack exchange,提问作者ijustlovemath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:14:52