Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

हैश जॉइन और मर्ज जॉइन (Oracle RDBMS) में क्या अंतर है?

एक "सॉर्ट मर्ज" जॉइन दो डेटा सेटों को जॉइन कीज़ के अनुसार जोड़ने के लिए सॉर्ट करके और फिर उन्हें एक साथ मर्ज करके किया जाता है। मर्ज बहुत सस्ता है, लेकिन सॉर्ट बेहद महंगा हो सकता है, खासकर अगर सॉर्ट डिस्क पर फैल जाता है। सॉर्ट की लागत को कम किया जा सकता है यदि डेटा सेट में से एक को इंडेक्स के माध्यम से क्रमबद्ध क्रम में एक्सेस किया जा सकता है, हालांकि एक इंडेक्स स्कैन के माध्यम से एक टेबल के ब्लॉक के उच्च अनुपात तक पहुंच भी पूर्ण टेबल स्कैन की तुलना में बहुत महंगा हो सकता है। ।

हैश जॉइन एक डेटा सेट को जॉइन कॉलम के आधार पर मेमोरी में सेट करके और दूसरे को पढ़ने और मैचों के लिए हैश टेबल की जांच करके किया जाता है। हैश जॉइन की लागत बहुत कम होती है जब हैश टेबल को पूरी तरह से मेमोरी में रखा जा सकता है, जिसकी कुल लागत डेटा सेट को पढ़ने की लागत से बहुत कम होती है। लागत बढ़ जाती है यदि हैश तालिका को एक-पास सॉर्ट में डिस्क पर फैलाना पड़ता है, और एक मल्टीपास सॉर्ट के लिए काफी बढ़ जाता है।

(प्री -10 जी में, एक बड़ी से छोटी तालिका में बाहरी जुड़ाव समस्याग्रस्त प्रदर्शन-वार थे, क्योंकि ऑप्टिमाइज़र पहले हैश में शामिल होने के लिए छोटी तालिका तक पहुंचने की आवश्यकता को हल नहीं कर सका, लेकिन पहले बाहरी जुड़ने के लिए बड़ी तालिका। नतीजतन इस स्थिति में हैश जॉइन उपलब्ध नहीं थे)।

हैश जॉइन की लागत को जॉइन की (ओं) पर दोनों टेबलों को विभाजित करके कम किया जा सकता है। यह ऑप्टिमाइज़र को यह अनुमान लगाने की अनुमति देता है कि एक तालिका में एक विभाजन से पंक्तियों को केवल दूसरी तालिका के एक विशेष विभाजन में एक मैच मिलेगा, और n विभाजन वाली तालिकाओं के लिए हैश जॉइन को n स्वतंत्र हैश जॉइन के रूप में निष्पादित किया जाता है। इसके निम्नलिखित प्रभाव हैं:

  1. प्रत्येक हैश तालिका का आकार कम कर दिया जाता है, इसलिए आवश्यक मेमोरी की अधिकतम मात्रा को कम कर देता है और संभावित रूप से अस्थायी डिस्क स्थान की आवश्यकता के लिए ऑपरेशन की आवश्यकता को हटा देता है।
  2. समानांतर क्वेरी संचालन के लिए इंटर-प्रोसेस मैसेजिंग की मात्रा बहुत कम हो जाती है, CPU उपयोग को कम करता है और प्रदर्शन में सुधार करता है, क्योंकि प्रत्येक हैश जॉइन PQ प्रक्रियाओं की एक जोड़ी द्वारा किया जा सकता है।
  3. गैर-समानांतर क्वेरी संचालन के लिए मेमोरी की आवश्यकता n के एक कारक से कम हो जाती है, और पहली पंक्तियों को पहले क्वेरी से प्रक्षेपित किया जाता है।

आपको ध्यान देना चाहिए कि हैश जॉइन का उपयोग केवल इक्वि-जॉइन के लिए किया जा सकता है, लेकिन मर्ज जॉइन अधिक लचीले होते हैं।

सामान्य तौर पर, यदि आप इक्वि-जॉइन में बड़ी मात्रा में डेटा शामिल कर रहे हैं तो हैश जॉइन एक बेहतर दांव होगा।

इस विषय को दस्तावेज़ीकरण में बहुत अच्छी तरह से शामिल किया गया है।

http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/optimops.htm#i51523

12.1 दस्तावेज़:https://docs.oracle.com/database/121/TGSQL/tgsql_join.htm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में NVL2 () फ़ंक्शन

  2. Oracle SQL डेवलपर से Excel में डेटा कैसे निर्यात करें?

  3. IRI सॉफ्टवेयर को Oracle से जोड़ना

  4. Oracle संग्रहीत कार्यविधि:परिणाम सेट और आउट पैरामीटर दोनों लौटाएँ

  5. Oracle डेटाबेस में PL/SQL पैकेज कैसे बनाएँ?