有没有办法优化下面的查询。
目前大约需要2分钟才能运行
我正在使用MS SQL。 Records_Table有近900万条记录。日期字段以30分钟为间隔存储,有60种不同类型的组
declare @date datetime
set @date = convert(datetime,'16/sep/2013',104)
SELECT
[Group],
CASE WHEN (SUM(A) + SUM(B)) = 0 THEN 0 ELSE
CAST(SUM(C) AS decimal(18, 2)) / (SUM(A) + SUM(B)) * 100 END AS Calculation
FROM Records_Table
WHERE date BETWEEN @Date AND @Date + 6
GROUP BY [Group]
请注意,我需要一整周的数据,所以我将条件设置为@Date和@Date + 6之间的日期
任何帮助将不胜感激。
由于
答案 0 :(得分:0)
尝试根据日期对您的表进行分区,因为我了解您的条件主要基于日期,您可以在日期创建索引,但由于您有900万行,我更喜欢分区。
答案 1 :(得分:0)
我建议在(日期,组)上建立一个索引,以便针对相关日期范围优化日期,并为聚合的限定符分组。