Pertimbangkan pertanyaan berikut:
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);
Statistik I / O memberikan output berikut:
Tabel 'ParameterType'. Pindai hitungan 0, bacaan logis 2, bacaan fisik 0, bacaan baca-depan 0, bacaan logis lob 0, bacaan fisik lob 0, bacaan baca lob depan 0.
Tabel 'Area'. Pindai menghitung 0, bacaan logis 2, bacaan fisik 0, bacaan baca-depan 0, bacaan logis lob 0, bacaan fisik lob 0, bacaan lob baca-depan 0.
Tabel 'Parameter'. Pindai hitungan 1, bacaan logis 4, bacaan fisik 0, bacaan baca-depan 0, bacaan logis lob 0, bacaan fisik lob 0, baca bacaan lob depan 0.
Tabel 'Meja Kerja'. Pindai hitungan 1, bacaan logis 0, bacaan fisik 0, bacaan baca-depan 0, bacaan logis lob 0, bacaan fisik lob 0, bacaan lob baca-depan 0.
Meja kerja muncul di tab pesan yang membuat saya berpikir bahwa tempdb sedang digunakan oleh MERGE.
Saya tidak melihat apa pun dalam rencana Eksekusi yang akan menunjukkan perlunya tempdb
Apakah MERGEselalu menggunakan tempdb?
Apakah ada sesuatu di BOL yang menjelaskan perilaku ini?
Apakah menggunakan INSERT& UPDATElebih cepat dalam situasi ini?
Kiri

Baik

Berikut adalah struktur tabelnya

tempdb. Tampaknya aneh bahwa itu ada untuk satu baris sekalipun. Saya kira itu mungkin ada untuk perlindungan Halloween.