将行反规范化为列可以增强SQL Server的性能吗?
发布时间:2020-12-12 08:25:39 所属栏目:MsSql教程 来源:网络整理
导读:我有一个数据,它是一个整数值矩阵,表示带状分布曲线. 我正在针对INSERT性能优化SELECT性能.最多有100个乐队. 我主要是通过在一段时间内对频段求和或求平均来查询这些数据. 我的问题是,通过在每个频段有1列的表格中展平这些数据,或者使用表示频段值的单个列,我
我有一个数据,它是一个整数值矩阵,表示带状分布曲线.
我正在针对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.这将为您提供与非规范化表相同的性能,但保留好数据组织正常化的好处. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |