SQL Server 2008 中的高效批量刪除
在資料庫管理中,經常出現高效資料刪除的需求。雖然 SQL Server 提供標準 DELETE 語句,但對於大型資料集來說它們可能非常耗時。此問題探討 SQL Server 是否為批次 DELETE 作業提供批次複製 (bcp) 的替代方案。
不能使用 TRUNCATE,請改用 WHERE
所呈現的查詢詢問是否有在 SQL Server 中批次刪除的解決方案。問題是刪除應受到 WHERE 子句的限制,從而使 TRUNCATE 成為不合適的選項。
沒有與 DELETE 等效的批次複製
不幸的是,沒有批次複製SQL Server 中 DELETE 操作的複製等效項。帶有 WHERE 子句的 DELETE 語句必須以標準 SQL 查詢執行。
批次 DELETE 以實現可擴充性
對於大型資料集,請考慮批次 DELETE 操作。這些涉及將DELETE 語句分成較小的批次,如下所示:
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
高百分比刪除的替代方法
刪除絕大多數行時,另一種方法可能更有效:
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 中是否有比標準 DELETE 語句更快的批次刪除替代方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!