我有一个数据,它是一个整数值矩阵,表示带状分布曲线.
我正在针对INSERT性能优化SELECT性能.最多有100个乐队.
我主要是通过在一段时间内对频段求和或求平均来查询这些数据.
我正在针对INSERT性能优化SELECT性能.最多有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.这将为您提供与非规范化表相同的性能,但保留好数据组织正常化的好处.