次のクエリを検討してください。
MERGE [Parameter] with (rowlock) AS target
USING (SELECT @AreaId, @ParameterTypeId, @Value)
AS source (AreaId, ParameterTypeId, Value)
ON (target.AreaId = source.AreaId AND
target.ParameterTypeId = source.ParameterTypeId)
WHEN MATCHED THEN
UPDATE SET target.Value = source.Value, @UpdatedId = target.Id
WHEN NOT MATCHED THEN
INSERT ([AreaId], [ParameterTypeId], [Value])
VALUES (source.AreaId, source.ParameterTypeId, source.Value);
統計I / Oは次の出力を提供します。
テーブル 'ParameterType'。スキャンカウント0、論理読み取り2、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み0。
テーブル「領域」。スキャンカウント0、論理読み取り2、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み読み取り0。
表「パラメーター」。スキャンカウント1、論理読み取り4、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み読み取り0。
テーブル 'Worktable'。スキャンカウント1、論理読み取り0、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み読み取り0
ワークテーブルが[メッセージ]タブに表示され、tempdbが使用されていると思わせますMERGE。
実行計画にtempdbの必要性を示すものが何も表示されていません
MERGEいつものtempdbを使うのか?
この動作を説明するBOLには何かありますか?
う使用INSERT&UPDATE速く、このような状況であること?
左

正しい

これがテーブル構造です

tempdb。しかし、それが単一の行にあることは奇妙に思えます。ハロウィーンの保護のためにあるかもしれません。