有沒有一種方法可以優化下面的查詢。使用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