क्रेग फ्रीडमैन के ब्लॉग, नेस्टेड लूप्स जॉइन में , वह बताते हैं कि नेस्टेड लूप्स ज्वाइन क्यों नहीं एक सही बाहरी जुड़ाव का समर्थन कर सकते हैं:
समस्या यह है कि हम आंतरिक तालिका को कई बार स्कैन करते हैं - एक बार बाहरी पंक्ति की प्रत्येक पंक्ति के लिए। हम इन एकाधिक स्कैन के दौरान कई बार एक ही आंतरिक पंक्तियों का सामना कर सकते हैं। किस बिंदु पर हम निष्कर्ष निकाल सकते हैं कि एक विशेष आंतरिक पंक्ति शामिल नहीं हुई है या नहीं?
क्या कोई कृपया इसे वास्तव में सरल और शैक्षिक तरीके से समझा सकता है?
क्या इसका मतलब है कि लूप बाहरी तालिका ( R1
) और आंतरिक ( R2
) स्कैन से शुरू होता है ?
मैं समझता हूं कि उस R1
मूल्य के लिए R2
, जो इसके साथ नहीं जुड़ता है , इसे NULL
परिणाम सेट के साथ बदल दिया जाना चाहिए ( NULL, R2
)। मेरे लिए ऐसा लगता है कि R2
जब मूल्य R1
शामिल नहीं होता है, तो इस कारण से लौटना असंभव है कि यह नहीं जान सकता कि किस R2
मूल्य को वापस करना है। लेकिन इसका तरीका यह नहीं बताया गया है। या यह है?
एसक्यूएल सर्वर तथ्य का अनुकूलन में करता है (और अक्सर बदल देता है) RIGHT JOIN
के साथ LEFT JOIN
है, लेकिन सवाल क्यों यह है समझाने के लिए है तकनीकी रूप से असंभव एक के लिए NESTED LOOPS JOIN
उपयोग करने के लिए / समर्थन RIGHT JOIN
तर्क।