2013-11-21 198 views
1

我有一個表在我的數據庫,只有當一個特定的運行報告,並可以生長在上述期間相當大的被刪除的記錄。我正在爲報表運行時實施批量刪除。只想獲得關於路線的意見。批量刪除記錄在數據庫

While Exists (select top (1) StoreNbr from #Test WHERE DATEDIFF(dd, LogDate, GETDATE()) >= 60) 
Begin 
      delete top (5000) from #Test WHERE DATEDIFF(dd, LogDate, GETDATE()) >= 60 
End 
  1. 我應該使用WAITFOR延遲內環路,這是否有任何實際的好處?
  2. 我應該禁用表上的索引以前在執行刪除和重新啓用它們一旦完成?
+1

請務必註明您正在使用的SQL方言。我從語法上猜到了MS SQL Server,但我可能是錯的。 – Charles

回答

0

如何使用存儲過程?我過去使用過它。在存儲過程中包含刪除和選擇語句。讓您的報告執行存儲過程,您的報告將在一步獲取信息和刪除記錄。

+0

報告本身就是一個存儲過程,並且恰好清除了此表作爲最後一步,但導致SSIS包因大量數據被刪除而失敗: 從table1中刪除,其中日期<@Date。我只是希望在以批量與多列索引中刪除約10萬條記錄的最佳途徑某些輸入。 – user1769667

+1

在刪除之前嘗試刪除索引,然後在刪除完成後重新創建索引。 – vasin1987