我們已經經歷過的工作性能問題,我能幸運找到查詢導致緩慢..SQL Server查詢性能比較調諧GROUP BY和連接子句
select name from Student a, Student_Temp b
where a.id = b.id and
a.name in (select name from Student
group by name having count(*) = @sno)
group by a.name having count(*) = @sno
OPTION (MERGE JOIN, LOOP JOIN)
這個特定的查詢被反覆調用多次放緩下降的表現..
Student
表有800萬條記錄和Student_temp
每次在迭代過程中收到5-20條記錄。 (id
和name
) 和sno
= Student_Temp
中的記錄數。
我的問題如下, 1)爲什麼這個查詢顯示性能問題。 2)你們能否提供一種更有效的寫作方式?
在此先感謝!
不知道你甚至需要 「和 a.name在(由具有數名(*)= @sno選擇學生 組名)」 的一部分 – athabaska
我認爲你可以使用內部連接:從學生中選擇名稱INNER JOIN Student_Temp b ON a.id = b.id ... – PeterRing
子查詢沒有任何意義。 – KumarHarsh