gpt4 book ai didi

sql - 将行非规范化为列是否可以提高 SQL Server 的性能?

转载 作者:行者123 更新时间:2023-12-02 17:31:30 24 4
gpt4 key购买 nike

我的数据是整数值矩阵,表示带状分布曲线。我正在优化 SELECT 性能而不是 INSERT 性能。最多有 100 个频段。我将主要通过对一段时间内的范围进行求和或平均来查询此数据。

我的问题是,通过将这些数据展平到每个波段 1 列的表格中,或者使用代表波段值的单列,我是否可以实现更好的性能

扁平化数据

UserId ActivityId DateValue Band1 Band2 Band3....Band100
10001 10002 1/1/2013 1 5 100 200

或标准化

UserId ActivityId DateValue Band BandValue
10001 10002 1/1/2013 1 1
10001 10002 1/1/2013 2 5
10001 10002 1/1/2013 3 100

示例查询

SELECT AVG(Band1), AVG(Band2), AVG(Band3)...AVG(Band100)
FROM ActivityBands
GROUP BY UserId
WHERE DateValue > '1/1/2012' AND DateValue < '1/1/2013'

最佳答案

以标准化格式存储数据。

如果您没有从该方案中获得可接受的性能,请首先考虑表上有哪些索引,而不是进行非规范化。您可能缺少一个索引,该索引将使其执行类似于非规范化表。接下来,尝试编写一个查询来从规范化表中检索数据,以便结果集看起来像非规范化表,并使用该查询创建 indexed view 。这将为您提供与非规范化表相同的选择性能,但保留适当规范化的良好数据组织优势。

关于sql - 将行非规范化为列是否可以提高 SQL Server 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16534128/

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