首页 > 解决方案 > 哪个 SSIS 可执行文件是用于删除命令的最佳实践

问题描述

我在同一个 SQL 2016 标准上有 2 个数据库。服务器。我需要删除与 Arh DB 表中的 ID 匹配的 Prod 表数据。我分批执行 10000 行。Prod 和 Arh DB 上的表具有相同的架构。我需要删除大量数据(大约 3000000 行)。我使用带有 SQL 语句的可执行 OLE DB 命令,但它的速度非常慢。有没有机会加快这个速度。

标签: sqlsql-serverssisetloledbcommand

解决方案


无需在数据流任务(逐行执行删除操作)中使用 OLEDB 命令,您可以简单地使用Execute SQL Task并编写带有连接的删除命令:

DELETE T1
FROM Prod T1 INNER JOIN Arch T2
ON T1.id = T2.id

如果您正在处理数百万行,则可以批量删除行:

WHILE 1=1
BEGIN

    DELETE TOP(100000) 
    FROM Prod 
    WHERE EXISTS(SELECT 1 From Arch WHERE Prod.id = Arch.id)

    IF @@ROWCOUNT < 1 BREAK

END

参考


推荐阅读