निम्नलिखित प्रश्न पर विचार करें:
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 निम्नलिखित आउटपुट देता है:
तालिका 'पैरामीटर'। स्कैन काउंट 0, लॉजिकल रीड 2, फिजिकल रीड्स 0, रीड-फॉरवर्ड रीड्स 0, लॉब लॉजिकल रीड्स 0, लॉब फिजिकल रीड्स 0, लॉब रीड-फॉरवर्ड रीड्स 0.
टेबल 'एरिया'। स्कैन काउंट 0, लॉजिकल रीड्स 2, फिजिकल रीड्स 0, रीड-फॉरवर्ड रीड्स 0, लॉब लॉजिकल रीड्स 0, लॉब फिजिकल रीड्स 0, लॉब रीड-फॉरवर्ड रीड्स 0.
टेबल 'पैरामीटर'। स्कैन काउंट 1, लॉजिकल रीड 4, फिजिकल रीड्स 0, रीड-फॉरवर्ड रीड्स 0, लॉब लॉजिकल रीड्स 0, लॉब फिजिकल रीड्स 0, लॉब रीड-
फॉरवर्ड रीड्स 0. टेबल 'वर्कटेबल'। स्कैन काउंट 1, लॉजिकल रीड्स 0, फिजिकल रीड्स 0, रीड-फॉरवर्ड रीड्स 0, लॉब लॉजिकल रीड्स 0, लॉब फिजिकल रीड्स 0, लॉब रीड-फॉरवर्ड रीड्स 0।
मैसेज टैब में वर्कटेबल दिखाई देता है जिससे मुझे लगता है कि टेम्पर्डब द्वारा उपयोग किया जा रहा है MERGE।
मैं निष्पादन योजना में ऐसा कुछ भी नहीं देख रहा हूं जो टेम्पर्डब की आवश्यकता का संकेत दे
MERGEहमेशा टेम्पर्ड बीडी का उपयोग करता है ?
क्या BOL में ऐसा कुछ है जो इस व्यवहार की व्याख्या करता है?
इस स्थिति में उपयोग करना INSERTऔर UPDATEतेज होगा ?
बाएं

सही

यहाँ तालिका संरचना है

tempdb। अजीब लगता है कि यह एक एकल पंक्ति के लिए है। मुझे लगता है कि यह हेलोवीन सुरक्षा के लिए हो सकता है।