我有数据,它是一个整数值矩阵,表示带状分布曲线。我正在优化 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'