0

有没有办法优化下面的查询。

目前运行大约需要 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]

请注意,我需要一整周的数据,因此我将条件设置为日期 BETWEEN @Date AND @Date + 6

任何帮助将不胜感激。

谢谢

4

2 回答 2

0

尝试根据日期对表进行分区,因为据我了解,您的条件主要基于日期,您可以简单地在日期上创建索引,但由于有 900 万行,我更喜欢分区。

于 2013-10-07T08:29:31.150 回答
0

我建议在 (Date,Group) 上建立一个索引,以便针对相关日期范围优化日期,并针对聚合的限定符对 Group 进行优化。

于 2013-10-07T09:04:11.523 回答