SQL Server 2005,批量更新或插入
我正在寻找一种解决方案,以便在SQLServer2005中执行类似重复密钥更新的插入操作。此操作可能会插入或更新大量条目。SQL Server 2008有一个简洁的操作合并,这将非常完美,问题是我们一直使用SQL Server 2005。SQL Server 2005,批量更新或插入,sql,sql-server-2005,Sql,Sql Server 2005,我正在寻找一种解决方案,以便在SQLServer2005中执行类似重复密钥更新的插入操作。此操作可能会插入或更新大量条目。SQL Server 2008有一个简洁的操作合并,这将非常完美,问题是我们一直使用SQL Server 2005。 我已经研究过标准解决方案,但它们都不好,因为它们假设只更新/插入了一个条目。 有人知道在旧版本的SQL Server中复制合并行为的方法吗?包含使用UPDATE语句的OUTPUT子句的建议。要从该博客条目(未经测试)中解释该示例,请执行以下操作: 我必须开始更
我已经研究过标准解决方案,但它们都不好,因为它们假设只更新/插入了一个条目。
有人知道在旧版本的SQL Server中复制合并行为的方法吗?包含使用
UPDATE
语句的OUTPUT
子句的建议。要从该博客条目(未经测试)中解释该示例,请执行以下操作:
我必须开始更多地使用OUTPUT子句!关于性能的一个注意事项,如果向表变量添加主键,它将显著加快执行速度。对我来说,它将100k行的插入/更新的执行时间从4分钟减少到了~6秒<代码>声明@updated_id表(id int主键集群)
DECLARE @updated_ids table(id int)
UPDATE table
SET ...
OUTPUT inserted.id INTO @updated_ids
FROM table INNER JOIN data-to-insert ON table.id = data-to-insert.id
INSERT INTO table
SELECT ...
FROM data-to-insert
WHERE id NOT IN (SELECT id FROM @updated_ids)