合并比插入快

Jas*_*den 2 performance sql-server insert merge

使用mergeoverinsert函数有什么优点/缺点吗?可在insert声明中利用'OUTPUT的”

注意: 的ON子句merge设置为1=0(始终插入)

Merge DeviceReading
    Using (
        --table here
    ) As [Source]
    On (1 = 0) -- Effectively Makes this an Insert as 1 Never Matches 0
    When Not Matched Then
        INSERT (
            [value1],
            [value2]
        ) VALUES (
            @value1,
            @value2
        ) OUTPUT Inserted.[value1], Inserted.[value2] Into @InsertIDTable;
Run Code Online (Sandbox Code Playgroud)

usr*_*usr 5

MERGE有更灵活的OUTPUTOUTPUT如果您希望客户端能够将它发送的内容与实际插入的内容(例如IDENTITY值)相匹配,可以参考合并源,这很方便。INSERT不能这样做(没有根本原因;似乎没有实现)。

我想不出任何性能差异。这些计划肯定看起来如此相似,以至于我现在无法区分。如果存在重大差异,SQL Server 可以将一种形式优化为另一种形式。