【问题标题】:Which SSIS executable is best practise to use for delete command哪个 SSIS 可执行文件是用于删除命令的最佳实践
【发布时间】:2019-05-10 20:39:57
【问题描述】:

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

【问题讨论】:

  • 一般来说,一个人应该软删除第一个,然后最终在相当多的时候整体删除,因为我认为会发生很多锁定。还有其他事情要做:stackoverflow.com/questions/955435/…

标签: sql sql-server ssis etl oledbcommand


【解决方案1】:

不用在数据流任务中使用 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

参考文献

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2012-11-10
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多