有人可以帮我理解TSQL合并的实际效果吗?并帮助我了解UPDATE / INSERT何时更快以及何时MERGE更快?
我知道这是一个非常模糊的问题,与我正在处理的一个特定案例无关。希望StackOverflow允许这样做。
如果你能给我相关的链接也可以。感谢。
感谢您指点: SQL Server : MERGE performance但我觉得这与索引然后合并更相关,因此我的问题与此不重复。
答案 0 :(得分:1)
合并实现在源和目标上执行full outer join
。根据您指定的副作用子句,可以将其简化为更容易的连接,例如左连接或内连接。
从连接结果中有计算标量运算符,用于计算应该发生的操作以及将要使用的值。此结果将流式传输到执行写操作的运算符。
这非常简化。如果您只指定一个副作用子句,则与普通DML的差异几乎为零。这表明合并没有固有的性能劣势。
事实上,它只需要传递一次数据就具有优势。通常,合并比执行相同操作的多个语句更快。
如果您以不受任何这些点影响的方式使用合并,它可以使用更多的CPU。
性能实际上取决于架构,合并的形状和数据。我可以构建合并稍慢的情况和速度明显更快的情况。