【发布时间】:2013-05-08 04:47:41
【问题描述】:
我的数据是整数值矩阵,表示带状分布曲线。 我正在优化 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'
【问题讨论】:
标签: sql sql-server denormalization database-normalization