我在 SQL Server 中有 SQL 命令任务,每秒只更新 20 行,但我需要更新超过 200,000 行,这需要时间。当我使用 SCD(类型 2)时,它既不插入也不更新任何记录。(甚至没有给出任何错误)
一些行正在传输,SQL 命令任务变成黄色。虽然它正在更新列但非常慢(每秒 20 行)。
如何提高更新速度?
我在 SQL Server 中有 SQL 命令任务,每秒只更新 20 行,但我需要更新超过 200,000 行,这需要时间。当我使用 SCD(类型 2)时,它既不插入也不更新任何记录。(甚至没有给出任何错误)
一些行正在传输,SQL 命令任务变成黄色。虽然它正在更新列但非常慢(每秒 20 行)。
如何提高更新速度?
不要使用 SQL 任务。它执行单例操作,因此您可以预期会针对目标数据库发出 200,000 条更新语句。如果您创建了一个存储过程来避免查询编译过程中的几个步骤,您可能会获得一些边际提升,但您必须测试并查看。
获得性能提升的真正方法是创建一个临时表并将所有要更新的行转储到该表中。数据流完成后,连接一个执行 SQL 任务以执行从暂存表到目标表的批量更新。
让我知道一张图片是否会更清楚
如果使用 SQL 2008 或更高版本,请尝试以基于集合的方式而不是 SQL 命令的 RBAR(逐行)工作的 MERGE 语句(在执行 sql 任务中)