sql server 2008中“Merge”子句的性能如何?

时间:2010-03-30 20:03:52

标签: sql-server-2008

Merge可以根据与源表的连接结果对目标表执行插入,更新或删除操作。例如,您可以根据另一个表中的差异在一个表中插入,更新或删除行来同步两个表。

是否有人熟悉性能使用“Merge”与传统逻辑来检查存在并决定更新或插入呢?

谢谢!

3 个答案:

答案 0 :(得分:8)

MERGE通常更快,因为DML操作较少,而且它也是文档中推荐的方法。使用“传统”方式,您将对表进行两次处理 - 一次检查是否存在以及一次执行DML。使用MERGE,一切都用一个操作封装 - 因此发出一组锁,一组记录等等。

但是,对于您的查询实际执行的操作,这是非常主观的。您应该查看MSDN上的Optimizing MERGE Statement Performance

答案 1 :(得分:1)

Technet在Optimizing MERGE Statement Performance中有一些信息。它基本上表示性能优于单独检查,因为只需要对数据进行一次传递。然而索引等当然仍然很重要。

答案 2 :(得分:0)

我们最近在一个大型数据仓库项目中使用了这个Merge语句,我们发现了良好的性能以及易于实现。我们认为Merge声明对于开发非常方便。

期待讨论

感谢 prav