/ / TSQL मर्ज कैसे काम करता है? UPDATE और INSERT के खिलाफ प्रदर्शन - sql, sql-server, performance, tsql, sql-server 2012

कैसे TSQL मर्ज काम करता है? अद्यतन और आईएनएसईआरटी के खिलाफ प्रदर्शन - एसक्यूएल, एसक्यूएल-सर्वर, प्रदर्शन, tsql, sql-server-2012

क्या कोई मुझे समझने में मदद कर सकता है कि TSQL वास्तव में कैसे काम करता है? और मुझे समझने में मदद करें कि UPDATE / INSERT कब तेज होगा और MERGE कब तेज होगा?

मुझे पता है कि यह एक बहुत ही अस्पष्ट सवाल है और एक विशेष मामले से संबंधित नहीं है जिस पर मैं काम कर रहा हूं। आशा है कि यह StackOverflow पर अनुमति दी गई है।

यदि आप मुझे प्रासंगिक लिंक दे सकते हैं जो काम करेगा। धन्यवाद।

मुझे इंगित करने के लिए धन्यवाद: SQL सर्वर: MERGE प्रदर्शन लेकिन मुझे लगता है कि यह इंडेक्स से अधिक संबंधित है तो विलय करें और इसलिए मेरा प्रश्न इस का डुप्लिकेट नहीं है।

उत्तर:

उत्तर № 1 के लिए 1

मर्ज कार्यान्वयन एक करता है full outer join स्रोत और लक्ष्य पर आपके द्वारा निर्दिष्ट किए गए साइड-इफ़ेक्टिंग क्लॉज़ के आधार पर, यह आसान जुड़ने के लिए कम हो सकता है जैसे कि बाएं या आंतरिक जोड़।

जॉइन रिजल्ट से कंप्यूट स्केलर हैंऑपरेटर जो गणना करते हैं कि क्या कार्रवाई होने वाली है और किन मूल्यों का उपयोग किया जाना है। यह परिणाम एक ऑपरेटर में प्रवाहित होता है जो लिखता है।

यह बहुत सरल है। सामान्य DML का अंतर लगभग शून्य है यदि आप केवल एक साइड-इफ़ेक्टिंग क्लॉज़ निर्दिष्ट करते हैं। इससे पता चलता है कि मर्ज में अंतर्निहित प्रदर्शन का नुकसान नहीं है।

वास्तव में यह इस अर्थ में एक लाभ है कि इसे केवल एक बार डेटा से अधिक करने की आवश्यकता है। अक्सर, एक ही काम करने वाले कई कथनों की तुलना में मर्ज तेज़ होता है।

  • ऑप्टिमाइज़र एक बार में सभी डीएमएल देख सकता है
  • प्रति कथन एक के बजाय डेटा पर एक पास
  • सभी इंडेक्स राइट्स इंडेक्स की द्वारा सॉर्ट किए जाते हैं। यह कई बार के बजाय एक बार करना बेहतर है
  • केवल एक बार ओवरहेड प्रति कथन

यदि आप मर्ज का इस तरह से उपयोग करते हैं तो यह थोड़ा अधिक सीपीयू का उपयोग कर सकता है जो इनमें से किसी भी बिंदु से लाभ नहीं करता है।

प्रदर्शन वास्तव में स्कीमा, मर्ज के आकार और डेटा पर निर्भर करता है। मैं आपको उन मामलों का निर्माण कर सकता हूं जहां मर्ज थोड़ा धीमा है और ऐसे मामले जहां यह काफी तेज है।