有没有一种方法可以优化下面的查询。使用Case和select语句中的操作优化SQL查询
目前,它大约需要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
任何帮助将不胜感激。
感谢
你的桌子上有什么索引? – GarethD
我跑了下面的查询,我没有得到任何结果(因此,没有):select * from sys.indexes where object_id =(从sys.objects选择object_id where name ='Records_Table') – Selrac
我建议索引然后选择日期,然后将所需的列作为非关键列添加。例如CREATE INDEX IX_RecordsTable_Date ON Records_Table(Date)INCLUDE([Group],A,B,C)' – GarethD