【发布时间】:2010-03-30 20:03:51
【问题描述】:
Merge 可以根据与源表连接的结果对目标表执行插入、更新或删除操作。例如,您可以通过根据在另一个表中发现的差异在一个表中插入、更新或删除行来同步两个表。
是否有人熟悉使用“合并”与传统逻辑来检查存在并决定更新或插入的性能?
谢谢!
【问题讨论】:
标签: sql-server-2008
Merge 可以根据与源表连接的结果对目标表执行插入、更新或删除操作。例如,您可以通过根据在另一个表中发现的差异在一个表中插入、更新或删除行来同步两个表。
是否有人熟悉使用“合并”与传统逻辑来检查存在并决定更新或插入的性能?
谢谢!
【问题讨论】:
标签: sql-server-2008
MERGE 通常更快,因为 DML 操作较少,这也是文档中推荐的方法。使用“传统”方式,您将处理表两次 - 一次检查是否存在,一次执行 DML。使用 MERGE,一切都封装在一个操作中 - 因此发出一组锁、一组日志记录等。
但是,您的查询实际上在做什么是非常主观的。你应该看看 MSDN 上的Optimizing MERGE Statement Performance。
【讨论】:
Technet 在Optimizing MERGE Statement Performance 中有一些信息。它基本上说性能比单独检查要好,因为只需要一次通过数据。但是,索引等当然仍然很重要。
【讨论】:
我们最近在一个大型数据仓库项目中使用了这个 Merge 语句,我们发现它具有良好的性能并且易于实施。我们觉得 Merge 语句对于开发来说非常方便。
期待讨论
谢谢 说实话
【讨论】: