哪个 SSIS 可执行文件是用于删除命令的最佳实践

Which SSIS executable is best practise to use for delete command

我在同一个 SQL 2016 std 上有 2 个数据库。服务器。我需要删除 Prod table 与 Arh DB table 中的 ID 匹配的数据。我在 10000 行的批次中执行此操作。 Table 在 Prod 和 Arh DB 上的架构相同。 我需要删除大量数据(大约 3000000 行)。 我将 OLE DB 命令 executable 与 SQL 语句一起使用,但速度非常慢。 有没有机会加快这个。

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

编写删除命令
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

参考资料

  • How to Delete Top(N) rows with an inner join?