gpt4 book ai didi

sql - 关于 SQL/Postgres 中聚合函数内部的问题

转载 作者:行者123 更新时间:2023-11-29 12:22:50 25 4
gpt4 key购买 nike

像 SUM 这样的函数是如何工作的?如果我执行

select id,sum(a) from mytable group by id

它是否按 id 排序,然后对每个范围内的相等 id 求和?我不是规划师专家,但看起来这就是正在发生的事情,我的表可能有一亿行和几百万个不同的 ID。

或者它只是保留 id -> current_sum 的散列,然后在每一行增加 id 的值或添加一个新键?这不是更快并且更少占用内存吗?

最佳答案

SQL 标准试图规定外部行为,而不是内部行为。在这种特殊情况下,符合(众多)标准之一的 SQL 实现应该表现得像按此顺序执行操作一样。

  1. 从 FROM 子句中的所有表构造函数构建一个工作表。 (您的示例中只有一个。)

  2. 在 GROUP BY 子句中,将工作表分成组。将每组减少为一行。用分组表替换工作表。

  3. 解析 SELECT 子句中的表达式。

遵循 SQL 标准的查询优化器可以自由地按照他们喜欢的方式重新排列事物,只要结果与遵循这些步骤的结果相同即可。

您可以在 this SO question 的答案和评论中找到更多详细信息.

关于sql - 关于 SQL/Postgres 中聚合函数内部的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412982/

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