2010-08-05 12 views
5

मैं एक प्रश्न बना रहा हूं जो 8 टेबल से प्राप्त रिकॉर्ड के लिए जानकारी प्रदर्शित करेगा। मूल रूप से क्वेरी लिखने वाले डेवलपर ने 'जहां यह बराबर है' का संयोजन किया और यह 'जुड़ने के लिए यह' बराबर है।एसक्यूएल इनरर जॉइन प्रश्न

मैंने बाद में INNER जॉइन का उपयोग करने के लिए क्वेरी बदल दी है। मुझे आश्चर्य हुआ कि मेरा दृष्टिकोण WHERE ऑपरेटरों के संयोजन का उपयोग करने से बेहतर था या नहीं।

अच्छी प्रैक्टिस के उपाय पर, इनर जॉइन का संयोजन एक अच्छा विकल्प है या मुझे एक अलग तकनीक का उपयोग करना चाहिए।

उत्तर

3

प्रदर्शन बिंदु से, कोई अंतर नहीं होगा ... कम से कम आरडीबीएमएस जैसे एसक्यूएल-सर्वर/ओरेकल पर नहीं ... ये डेटाबेस इंजन दोनों पैटर्न को पहचानने में सक्षम हैं और इसका उपयोग करते हैं दोनों के लिए एक ही निष्पादन योजना ...

मेरी विनम्र राय में दोनों समान रूप से अच्छी प्रैक्टिस हैं, लेकिन आपको स्थिरता और उचित संरेखण बनाए रखना चाहिए ... कहीं मैंने सुना है कि जहां आम तौर पर ऑरैक डेवलपर्स द्वारा क्लॉज का उपयोग किया जाता है, और आंतरिक शामिल एसक्यूएल-सर्वर ... इसके बारे में बहुत कुछ नहीं है ... अब तक ज्यादातर कोडर दोनों प्रकार के प्रश्नों को समझने में सक्षम हैं ...

+0

का उपयोग करने से पहले कहा गया था MySQL और आम तौर पर अंदरूनी पसंद सरल पसंद करते हैं क्योंकि मैं। कोड क्लीनर दिखता है और यह समझना आसान लगता है। मैं सोचने में सही हूं कि दोनों टेबलों में रिकॉर्ड होने पर इनर जॉइन का उपयोग किया जाना चाहिए। –

+0

हां ... आंतरिक जुड़ाव आपको केवल उन अभिलेखों को लाएगा जिनके पास बाल तालिका में मिलान करने वाला रिकॉर्ड है ... यदि बच्चे तालिका में कोई मिलान करने वाला रिकॉर्ड नहीं है, तो विशेष पंक्ति को क्वेरी परिणाम से बाहर रखा गया है। –

+0

मुझे आश्चर्य है कि क्या आप मुझसे पूछे जाने वाले प्रश्न के साथ मेरी मदद कर सकते हैं? यह बहुत सारे रिकॉर्ड लौट रहा है जिसे मैं अनुमान लगाता हूं। –

0

दोनों ही व्यवहार करेंगे (जैसा कि राजा ने कहा था)। व्यक्तिगत रूप से मैं इनर/आउटर/बाएं जॉइन सिंटैक्स पसंद करता हूं क्योंकि यह अधिक सहज/स्पष्ट है। जब आप WHERE क्लॉज में शामिल स्थितियों के साथ बाएं जॉइन में जाते हैं तो आपको प्लस संकेतों का उपयोग करना होगा और फिर आपको याद रखना होगा कि किन पक्ष को उन्हें रखना है। Urgghh।

यह भी लगता है (फिर राजा के रूप में कहा गया) यह सच होना है कि ओरेकल देवताओं को शामिल शर्तों को WHERE खंड में रखने का पक्ष लेता है।

-Jamiet

1

मेरा मानना ​​है कि वहाँ दोनों के बीच कोई प्रदर्शन अंतर यह है कि:

एएनएसआई शैली
SELECT * FROM Table1 a JOIN TABLE2 b on a.id = b.id

पुरानी शैली
SELECT * FROM Table1 a , TABLE2 b
WHERE a.id = b.id

एएनएसआई शैली नई और अधिक पठनीय और सुंदर है, मैं पुरानी शैली को पसंद करता हूं, खासकर जब यह 4/5 से अधिक टेबल्स में शामिल होने की बात आती है ... शायद क्योंकि ओरेकल देव मैं ओ_ओ

संबंधित मुद्दे