TSQL合并是如何工作的?针对UPDATE和INSERT的性能



有人能帮助我了解TSQL合并实际上是如何工作的吗?并帮助我了解何时更新/插入会更快,何时合并会更快?

我知道这是一个非常模糊的问题,与我正在研究的一个特定案例无关。希望这是允许的StackOverflow

如果你能给我相关的链接,将工作以及。谢谢。

谢谢你告诉我:SQL Server:合并性能,但我觉得这更多的是与索引相关,而不是合并,因此我的问题不是重复这个

合并实现在源和目标上执行full outer join。根据您指定的副作用子句,可以将其简化为更容易的连接,例如左连接或内连接。

从连接结果中有计算标量运算符,计算应该发生什么操作以及将要使用什么值。该结果将被流式传输到执行写操作的操作符中。

这是非常简化的。如果只指定一个副作用子句,则与普通DML的差异几乎为零。这表明合并没有固有的性能劣势。

实际上它有一个优势,它只需要传递一次数据。通常,合并比多个语句做同样的事情要快。

  • 优化器可以一次看到所有的DML
  • 一次传递数据而不是一次传递语句
  • 所有的索引写都是按索引键排序的。最好这样做一次而不是多次
  • 单语句开销仅一次

如果你用一种不从以上任何一点获益的方式使用归并,它可以使用更多的CPU。

性能实际上取决于模式、合并的形状和数据。

最新更新