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中文网其他相关文章!