gpt4 book ai didi

mysql - 跨大量行运行 SUM

转载 作者:可可西里 更新时间:2023-11-01 07:33:58 26 4
gpt4 key购买 nike

我有一个关于 SQL 函数 SUM() 的理论问题。

假设我们有一个表,其中包含一个名为“值”的列

“值”是正数或负数的小数。

在我们的潜在解决方案中,我们希望对“值”列的所有行运行 SUM()

SELECT SUM(value) 
FROM table

到目前为止没有问题,但数据集可能有数百万行。甚至可能有数亿行,因为数据将保留多年。

所以我的问题是:

  1. 你能对数亿行运行 SUM() 吗?
  2. 对于跨那么多行的查询,我可以期待什么样的性能?我们还没有解决,但考虑使用 MySQL 或 SQL Server。

最佳答案

您可以查看 SQL Server 中的 column store。简而言之,您可以在表上创建列存储索引——不同于传统的行存储索引。

这些索引是专门为在涉及大量数据时优化聚合查询而设计的(例如,像数据仓库starsnowflake方案)。

docs 开始:

Columnstore indexes can achieve up to 100x better performance on analytics and data warehousing workloads and up to 10x better data compression than traditional rowstore indexes.

因为:

  • 数据压缩 - 您可以从这里获得很多好处;例如,列存储索引从磁盘读取压缩数据,这意味着需要将更少的数据字节读入内存;
  • 列消除 - 列存储索引跳过查询结果不需要的列的读取,进一步减少查询执行的 I/O,从而提高查询性能(不像行存储索引)
  • 行组消除 - 使用元数据优化表扫描以根据您的过滤条件消除特定的行组;
  • 批处理模式执行 - 在 SQL Server 2019 之前,只有涉及此类索引的查询才能受益于批处理模式处理,这进一步减少了执行时间(检查此 video 以看看这个模式有多棒)

关于mysql - 跨大量行运行 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56679220/

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