SQL Server 2005,批量更新或插入

P. *_*kis 4 sql sql-server-2005

我正在寻找一个解决方案来执行插入,重复键更新像SQL Server 2005中的操作.此操作可能插入或更新大量条目.SQL Server 2008有一个简洁的操作MERGE可以完美地完成它,问题是我们
遇到了SQL Server 2005. 我已经研究过标准解决方案,但是所有这些都不好,因为他们认为只有一个条目更新/插入.
有没有人知道在旧版本的SQL Server中复制MERGE行为的方法?

Hei*_*nzi 6

Alex Kuznetsov的博客包含使用声明OUTPUT条款的建议UPDATE.从该博客条目(未经测试)中解释该示例:

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)
Run Code Online (Sandbox Code Playgroud)

  • 关于性能的说明,如果向表变量添加主键,则会大大加快执行速度.对我来说,它将插入/更新100k行的执行时间从4分钟减少到大约6秒.`声明@updated_ids表(id int PRIMARY KEY CLUSTERED)` (2认同)