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 MERGE
selalu menggunakan tempdb?
Apakah ada sesuatu di BOL yang menjelaskan perilaku ini?
Apakah menggunakan INSERT
& UPDATE
lebih 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.