हश, मर्ज और लूप के बीच अंतर शामिल होता है?


40

SQL सर्वर में आप शामिल संकेत निर्दिष्ट कर सकते हैं:

  • मर्ज में शामिल हों
  • लूप जॉय

उन तीनों में शामिल होने की परिभाषा क्या है, और प्रत्येक का उपयोग कब किया जाना चाहिए?

जवाबों:


37

MSDN से, उन्नत क्वेरी ट्यूनिंग अवधारणाओं के विषय में :

SQL सर्वर तीन प्रकार के जुड़ने के संचालन को नियोजित करता है:

  • नेस्टेड लूप्स जुड़ते हैं

  • मिलाते हैं

  • हश जुड़ता है

यदि एक ज्वाइन इनपुट छोटा है (10 पंक्तियों से कम) और दूसरा ज्वाइन इनपुट काफी बड़ा है और इसके ज्वाइन कॉलम पर अनुक्रमित है, तो एक इंडेक्स नेस्टेड लूप्स ज्वाइन सबसे तेजी से जुड़ने वाला ऑपरेशन है क्योंकि उन्हें सबसे कम I / O और सबसे कम तुलना की आवश्यकता होती है। नेस्टेड छोरों के बारे में अधिक जानकारी के लिए, नेस्टेड लूप्स जॉइन्ट्स को समझना।

यदि दो ज्वाइन इनपुट्स छोटे नहीं हैं, लेकिन उनके ज्वाइन कॉलम पर छांटे गए हैं (उदाहरण के लिए, यदि वे सॉर्ट किए गए इंडेक्स को स्कैन करके प्राप्त किए गए हैं), तो मर्ज ज्वाइन सबसे तेज जॉइन ऑपरेशन है। यदि दोनों जुड़ने वाले इनपुट बड़े हैं और दो इनपुट समान आकार के हैं, तो एक मर्ज पूर्व छँटाई के साथ जुड़ता है और एक हैश समान प्रदर्शन प्रदान करता है। हालाँकि, यदि दो इनपुट आकार एक दूसरे से काफी भिन्न होते हैं, तो हैश ज्वाइन ऑपरेशन अक्सर बहुत तेज़ होते हैं। अधिक जानकारी के लिए, मर्ज जॉइनिंग समझना।

हैश जॉइन बड़ी कुशलता से, गैर-अनुक्रमित, गैर-अनुक्रमित इनपुट को संसाधित कर सकता है।

लेकिन मेरा मानना ​​है कि आपको अधिक मूल विषय से शुरू करना चाहिए: क्वेरी ट्यूनिंग और अंत में क्वेरी संकेत का उपयोग करने के लिए जाना चाहिए।


5
सहमत होने पर, केवल एक अंतिम संकेत के रूप में छोड़ दिया जाना चाहिए।
एंड्रयू बिकर्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.