enable_presorted_aggregate

控制是否为预排序聚合创建计划的系统参数

enable_presorted_aggregate 是一个配置参数,用于确定计划程序是否会生成一个计划,该计划将提供按查询的 ORDER BY / DISTINCT 聚合函数所需顺序预排序的行。

enable_presorted_aggregatePostgreSQL 16 中添加。

默认值

enable_presorted_aggregate 的默认值为:on

用法

PostgreSQL 16 中,提交 1349d279 提高了 ORDER BY / DISTINCT 聚合的性能。但是,在某些情况下,这可能导致计划程序生成比以前效率更低的计划,因此可以使用 enable_presorted_aggregate 来恢复与 PostgreSQL 15 及更早版本相同的行为。

按 PostgreSQL 版本细分

enable_presorted_aggregate (PostgreSQL 17)

设置 on
单位  
类别 查询调整/计划程序方法配置
简短描述 启用计划程序生成计划的能力,这些计划为 ORDER BY / DISTINCT 聚合函数提供预排序的输入。
额外描述 允许查询计划程序构建计划,这些计划为带有 ORDER BY / DISTINCT 子句的聚合函数提供预排序的输入。禁用后,隐式排序始终在执行期间执行。
上下文 用户
变量类型 bool
来源 默认
最小值  
最大值  
枚举值  
引导值 on
重置值 on
源文件  
源代码行号  
待重启 false

文档enable_presorted_aggregate

enable_presorted_aggregate (PostgreSQL 16)

设置 on
单位  
类别 查询调整/计划程序方法配置
简短描述 启用计划程序生成计划的能力,这些计划为 ORDER BY / DISTINCT 聚合函数提供预排序的输入。
额外描述 允许查询计划程序构建计划,这些计划为带有 ORDER BY / DISTINCT 子句的聚合函数提供预排序的输入。禁用后,隐式排序始终在执行期间执行。
上下文 用户
变量类型 bool
来源 默认
最小值  
最大值  
枚举值  
引导值 on
重置值 on
源文件  
源代码行号  
待重启 false

文档enable_presorted_aggregate

变更历史

示例

使用 PostgreSQL 回归测试中的 tenk1 表,在 PostgreSQL 16 中,默认情况下,以下查询会生成一个带有排序键的计划

postgres=# EXPLAIN (COSTS off)
           SELECT SUM(two  ORDER BY two),
                  MAX(four ORDER BY four),
                  MIN(four ORDER BY four),
                  MAX(two  ORDER BY two)
             FROM tenk1;
          QUERY PLAN           
-------------------------------
 Aggregate
   ->  Sort
         Sort Key: two
         ->  Seq Scan on tenk1
(4 rows)

enable_presorted_aggregate 设置为 off 会恢复在 PostgreSQL 15 及更早版本中看到的行为

postgres=# SET enable_presorted_aggregate TO off;
SET

postgres=# EXPLAIN (COSTS off)
           SELECT SUM(two  ORDER BY two),
                  MAX(four ORDER BY four),
                  MIN(four ORDER BY four),
                  MAX(two  ORDER BY two)
             FROM tenk1;
       QUERY PLAN        
-------------------------
 Aggregate
   ->  Seq Scan on tenk1
(2 rows)

分类

GUC 配置项计划程序

另请参阅

enable_partitionwise_aggregate

反馈

提交任何关于 "enable_presorted_aggregate" 的评论、建议或更正 此处