2013-02-20 7 views
10

मान लें कि मेरे पास निम्न क्वेरी है। यदि टी 1 और टी 2 में शामिल होने पर कोई मिलान नहीं है, तो क्या अन्य सभी MySQL द्वारा अनदेखा किए गए हैं?प्रदर्शन कारणों से एसक्यूएल जॉइन को विशेष क्रम में रखा जाना चाहिए?

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

SELECT whatever 
FROM t1 
INNER JOIN t2 ON t2.t1id=t1.id 
INNER JOIN t3 ON t3.t2id=t2.id 
INNER JOIN t4 ON t4.t3id=t3.id 
INNER JOIN t5 ON t5.t4id=t4.id 
INNER JOIN t6 ON t6.t5id=t5.id 
INNER JOIN t7 ON t7.t6id=t6.id 
INNER JOIN t8 ON t8.t7id=t7.id 
INNER JOIN t9 ON t9.t8id=t8.id 
WHERE t1.c=123 AND t4.c=321 AND t6.c=222 AND t9.c=222 
+0

इस तरह की सड़क के नीचे आने वाले किसी और के संदर्भ में ... http://stackoverflow.com/questions/1018822/inner-join-on-vs-where-clause पर बहुत अधिक जानकारी प्रदान करता है मतभेद और लाभ। – JeopardyTempest

उत्तर

14

MySQL राज्यों के लिए documentation "जुड़ने वाले अनुकूलक उस क्रम की गणना करता है जिसमें तालिकाओं को शामिल किया जाना चाहिए"।

यह आदेश तालिकाओं के आकार और अन्य कारकों, जैसे इंडेक्स की उपस्थिति के बारे में जानकारी के आधार पर निर्धारित किया जाता है।

आपको उस क्रम में शामिल होना चाहिए जो क्वेरी को पढ़ने और बनाए रखने के लिए सबसे अधिक समझ में आता है।

+0

धन्यवाद गॉर्डन। इसलिए इससे कोई फर्क नहीं पड़ता कि "मैं" किस क्रम में डालता है क्योंकि MySQL मेरे लिए यह करेगा। क्या कोई मौका है कि MySQL उन्हें सूचीबद्ध करने के बजाय उन्हें एक अलग क्रम में रखेगा जिससे उन्हें एक गुच्छा निष्पादित किया जाएगा? – user1032531

+2

MySQL सभी जोड़ों को करने जा रहा है। यदि आपके पास अन्य तालिकाओं में आईडी कॉलम पर अनुक्रमणिका है, तो इंजन इंडेक्स का उपयोग करेगा और प्रदर्शन एक गैर-मुद्दा होना चाहिए। –

+1

दस्तावेज़ीकरण उद्धृत करने के लिए धन्यवाद! – Sonny

1

मेरा अनुमान है कि प्रदर्शन प्रदर्शन नहीं होगा। क्वेरी ऑप्टिमाइज़र को यह निर्धारित करना चाहिए कि टी 2 और टी 1 के बीच शामिल होना अमान्य है और सभी निर्भरता को निरंतर मान में हल किया जाता है जिसका अर्थ यह होगा कि उनका मूल्यांकन नहीं किया जाएगा।

+0

धन्यवाद स्टीव। मेरा अनुमान आपके जैसा ही है। आपको कितना यकीन है कि आप हैं? – user1032531

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