gpt4 book ai didi

postgresql - Postgres 如何实现 CUBE-、ROLLUP- 和 GROUPING SETS 运算符

转载 作者:行者123 更新时间:2023-11-29 11:54:17 26 4
gpt4 key购买 nike

我对 Postgres 如何实现 CUBE-、ROLLUP- 和 GROUPING SETS 运算符感兴趣?

最佳答案

实现是基于处理排序的数据。您可以看到 EXPLAIN 语句的结果:

 postgres=# EXPLAIN SELECT a, b, sum(c) FROM foo GROUP BY ROLLUP(a,b);
┌────────────────────────────────────────────────────────────────────┐
│ QUERY PLAN │
╞════════════════════════════════════════════════════════════════════╡
│ GroupAggregate (cost=142.54..166.99 rows=405 width=12) │
│ Group Key: a, b │
│ Group Key: a │
│ Group Key: () │
│ -> Sort (cost=142.54..147.64 rows=2040 width=12) │
│ Sort Key: a, b │
│ -> Seq Scan on foo (cost=0.00..30.40 rows=2040 width=12) │
└────────────────────────────────────────────────────────────────────┘
(7 rows)

postgres=# EXPLAIN SELECT a, b, sum(c) FROM foo GROUP BY CUBE(a,b);
┌────────────────────────────────────────────────────────────────────┐
│ QUERY PLAN │
╞════════════════════════════════════════════════════════════════════╡
│ GroupAggregate (cost=142.54..302.48 rows=605 width=12) │
│ Group Key: a, b │
│ Group Key: a │
│ Group Key: () │
│ Sort Key: b │
│ Group Key: b │
│ -> Sort (cost=142.54..147.64 rows=2040 width=12) │
│ Sort Key: a, b │
│ -> Seq Scan on foo (cost=0.00..30.40 rows=2040 width=12) │
└────────────────────────────────────────────────────────────────────┘
(9 rows)

数据经过排序,然后不断聚合。

关于postgresql - Postgres 如何实现 CUBE-、ROLLUP- 和 GROUPING SETS 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com