sql - 哪个 SSIS 可执行文件是用于删除命令的最佳实践
问题描述
我在同一个 SQL 2016 标准上有 2 个数据库。服务器。我需要删除与 Arh DB 表中的 ID 匹配的 Prod 表数据。我分批执行 10000 行。Prod 和 Arh DB 上的表具有相同的架构。我需要删除大量数据(大约 3000000 行)。我使用带有 SQL 语句的可执行 OLE DB 命令,但它的速度非常慢。有没有机会加快这个速度。
解决方案
无需在数据流任务(逐行执行删除操作)中使用 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
参考
推荐阅读
- cuda - 我可以在编译时确定是否设置了 --use_fast_math 吗?
- azure - 在逻辑应用程序 HTTP 操作中,如何在 $filter 中使用多个值?
- html - 根据条件隐藏弹性框项目(Angular 8)
- java - java DOM 在一行中解析 XML
- r - 如何为下面提到的数据创建图?
- angularjs - $routeProvider 未定义 - 无法通过此
- html - 页脚导航列表垂直空间太多
- typo3 - 由于信号槽(tx_news)中缺少对象而导致的错误
- c# - C# 应用程序无法访问 kubernetes 服务?
- c# - ASP.Net 导出列表到 CSV