gpt4 book ai didi

sql - 使用 SUM 聚合函数提高 group by 子句的性能

转载 作者:行者123 更新时间:2023-12-05 01:19:24 25 4
gpt4 key购买 nike

我有一个查询,它按 300,000 行的顺序对结果进行分组。

我尝试过的是创建一个按列分组的索引。当我在没有 SUM 函数的情况下运行查询时,查询似乎运行得非常快,但是当我添加一个带有 SUM 的列时,响应时间会增加很多。例如 1 秒内无 SUM 查询响应(分页),20 秒内有 SUM 查询响应。

假设在 a,b,c,d,e 列上有一个索引,并且 TableA 中有 300,000 条记录:

不到 1 秒的响应(在 SQL 开发人员中,显示前 50 行):

SELECT a,b,c,d
FROM tableA
GROUP BY
a,b,c,d

18 秒内响应(在 SQL 开发人员中,显示前 50 行):

SELECT a,b,c,d,SUM(e)
FROM tableA
GROUP BY
a,b,c,d

有什么建议吗?

最佳答案

您的索引使访问这些列值变得微不足道,但是当您添加 SUM(e) 时,必须扫描每一行以创建聚合。

COUNT(*) 代替 SUM() 会很快运行,因为索引包含所有相关信息。

在索引中包含要聚合的字段通常会提供可忽略的性能差异,除非表特别宽。从索引中删除 e 实际上可能会更好。

创建 materialized view会提高性能

关于sql - 使用 SUM 聚合函数提高 group by 子句的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515079/

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