SQL Server 2008 中的批次刪除最佳化
在SQL Server 中,批次複製(bcp) 等批量操作提供了高效的數據操作技術。然而,問題是類似的批量刪除功能是否可用。
查詢:
SQL Server 中有批次刪除的解決方案嗎?
TRUNCATE 不能用於選擇性刪除,提示需要 WHERE 子句。有沒有取代 bcp 來批量刪除資料的方法?
答案:
不,SQL Server 不提供專門的大量刪除操作。但是,有幾種方法可以最佳化批次刪除:
使用@@ROWCOUNT 進行批次刪除:
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
此查詢以「xxx」為批次執行DELETE 語句行,直到沒有行剩餘。
截斷並插入方法:
SELECT col1, col2, ... INTO #Holdingtable FROM MyTable WHERE ..opposite condition.. TRUNCATE TABLE MyTable INSERT MyTable (col1, col2, ...) SELECT col1, col2, ... FROM #Holdingtable
當需要刪除大量行時,此技術非常有效。它會建立一個包含要保留的行的臨時表,截斷原始表,然後將保留的行插入回表中。
以上是如何最佳化SQL Server 2008中的批次刪除?的詳細內容。更多資訊請關注PHP中文網其他相關文章!