我正在使用查詢連接列,其中一個具有聚簇索引,另一個具有非聚簇索引。查詢花費很長時間。這是我使用不同類型的索引的原因嗎?在具有不同索引的列上加入
SELECT @NoOfOldBills = COUNT(*)
FROM Billing_Detail D, Meter_Info m, Meter_Reading mr
WHERE D.Meter_Reading_ID = mr.id
AND m.id = mr.Meter_Info_ID
AND m.id = @Meter_Info_ID
AND BillType = 'Meter'
IF (@NoOfOldBills > 0) BEGIN
SELECT TOP 1 @PReadingDate = Bill_Date
FROM Billing_Detail D, Meter_Info m, Meter_Reading mr
WHERE D.Meter_Reading_ID = mr.id
AND m.id = mr.Meter_Info_ID
AND m.id = @Meter_Info_ID
AND billtype = 'Meter'
ORDER BY Bill_Date DESC
END
表中有多少行?有多少個索引?執行計劃說什麼?你的SQL代碼在哪裏? –
兩個表中均爲150 k。 實際上查詢太大,但執行計劃說這個查詢佔用33%,類似於這個查詢也需要33%,如果我得到這個解決方案,那麼我可以改善時間。 – Mustafa
選擇@NoOfOldBills = COUNT(*) \t \t \t \t \t \t \t從Billing_Detail d,Meter_Info米,Meter_Reading先生 \t \t \t \t \t \t \t其中d.Meter_Reading_ID = mr.ID和m.Id = mr.Meter_Info_ID和m。ID = @ Meter_Info_ID AND BillType = '儀表' \t \t \t \t \t \t \t \t \t \t IF(@NoOfOldBills> 0) \t \t \t \t \t \t \t BEGIN \t \t \t \t \t \t \t \t選擇頂部1 @ PReadingDate = Bill_Date \t \t \t \t \t \t \t \t從Billing_Detail d,Meter_Info米,Meter_Reading先生 \t \t \t \t \t \t \t \t其中d.Meter_Reading_ID = mr.ID和m.Id = mr.Meter_Info_ID和[email protected]_Info_ID和billtype = '表' ORDER BY Bill_Date遞減\t \t \t \t \t \t \t END – Mustafa