我運行一個存儲過程從兩個表中刪除數據:加快具有刪除加入
delete from TESTING_testresults
from TESTING_testresults
inner join TESTING_QuickLabDump
on TESTING_QuickLabDump.quicklabdumpid = TESTING_TestResults.quicklabdumpid
where TESTING_quicklabdump.[Specimen ID][email protected]
delete from TESTING_QuickLabDump
from TESTING_Quicklabdump
where [specimen id][email protected]
一個表爲60μm行,另一種是2m左右行
過程大約需要3運行幾秒鐘。
有沒有什麼辦法可以加快速度?也許使用EXISTS
?
意味着IF EXISTS...THEN DELETE
- 因爲刪除不應該發生的每一次
像這樣
如果@specimen exists
在TESTING_QuickLabDump
然後執行程序與兩個刪除
謝謝!
是否確定,如果它是查詢(找到要刪除的行),或花費最多時間的實際行刪除? – Magnus 2012-02-02 22:45:04
如果建立索引或其他調整工作無效,並且這構成了一個實際問題,您可能需要查看錶分區,這將允許您在沒有開銷的情況下執行刪除操作。 – 2012-02-03 00:10:50
也許我正在閱讀這裏的內容,但是您是否試圖逐行刪除數據?如果是這樣,請嘗試一種基於集合的方法。也就是說,創建一個臨時表,保存所有SpeciminID以刪除並加入它。 – 2012-02-03 01:07:48