我正在運行一個存檔腳本,該腳本根據它們輸入的日期從大型(〜50m記錄DB)中刪除行。日期字段是表格中的聚集索引,因此我正在應用我的條件語句。由於索引而導致sql server刪除速度急劇下降
我運行這個刪除while循環,試圖從1000到10萬條記錄在批處理東西。無論批量大小如何,它都令人驚訝地慢;就像10,000條記錄被刪除一分鐘。看看執行計劃,「索引刪除」花費了大量的時間。表格中大約有15個字段,其中大約10個字段具有某種索引。有什麼辦法可以解決這個問題嗎?我甚至不知道爲什麼每次索引刪除需要這麼長時間,有人可以對這裏發生的事情有所瞭解嗎?這是我執行計劃的樣本:
alt text http://img94.imageshack.us/img94/1006/indexdelete.png
(序列點delete命令)
這個數據庫是活的,並且越來越頻繁插入,這就是爲什麼我很猶豫使用修剪大小的複製和截斷方法。我還有其他選擇嗎?
完全有必要擁有所有這些索引嗎?如果你不使用索引,你應該擺脫它們。 – 2010-01-15 19:41:27
我剛剛和我們網站上的主程序員談過了,聽起來好像我們可能不需要所有的人了。雖然我們在表格上進行了一些查詢,但更經常用作日誌類型的表格。我可能會嘗試刪除一些插入,然後再次運行刪除腳本。 – Kevin 2010-01-15 20:17:46