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

Posted

技术标签:

【中文标题】sql server 2008中“Merge”子句的性能如何?【英文标题】:What is the performance of "Merge" clause in sql server 2008? 【发布时间】:2010-03-30 20:03:51 【问题描述】:

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

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

谢谢!

【问题讨论】:

【参考方案1】:

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

但是,您的查询实际上在做什么是非常主观的。你应该看看 MSDN 上的Optimizing MERGE Statement Performance

【讨论】:

【参考方案2】:

Technet 在Optimizing MERGE Statement Performance 中有一些信息。它基本上说性能比单独检查要好,因为只需要一次通过数据。但是,索引等当然仍然很重要。

【讨论】:

【参考方案3】:

我们最近在一个大型数据仓库项目中使用了这个 Merge 语句,我们发现它具有良好的性能并且易于实施。我们觉得 Merge 语句对于开发来说非常方便。

期待讨论

谢谢 说实话

【讨论】:

以上是关于sql server 2008中“Merge”子句的性能如何?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 MERGE 语法中的 USING 是啥?

Sql Server 2008 MERGE - 获取计数的最佳方式

在 SQL Server 2008 R2 的 MERGE 语句中更新插入的记录

SQL Server 2008 中的 MERGE 语句

SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有

sql server 2008 merge matched判定条件