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 语句中更新插入的记录