哪个 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?
我在同一个 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?