2010-02-01 10 views
39

की तुलना में बेहतर प्रदर्शन प्रदान कर सकता है, मैं प्रक्रियाओं की एक श्रृंखला पर प्रदर्शन सुधार करने की जांच कर रहा हूं, और हाल ही में एक सहयोगी ने उल्लेख किया है कि उसने EXISTS के स्थान पर INNER JOIN का उपयोग करते समय महत्वपूर्ण प्रदर्शन सुधार हासिल किए हैं।क्या एक INNER जॉइन EXISTS

जांच के हिस्से के रूप में यह क्यों हो सकता है कि मैंने सोचा कि मैं यहां सवाल पूछूंगा।

तो:

  • एक अंदरूनी प्रस्ताव बेहतर प्रदर्शन में शामिल हो सकते मौजूद है?
  • यह क्या परिस्थितियां होगी?
  • मैं सबूत के रूप में एक परीक्षण केस कैसे स्थापित कर सकता हूं?
  • क्या आपके पास और दस्तावेज़ीकरण के लिए कोई उपयोगी लिंक है?

और वास्तव में, कोई अन्य अनुभव लोग इस प्रश्न पर सहन कर सकते हैं।

यदि कोई उत्तर अन्य प्रश्नों के किसी भी सुझाव के बिना विशेष रूप से इस प्रश्न को संबोधित कर सकता है तो मैं सराहना करता हूं। हमारे पास पहले से ही काफी सफलता मिली है, और मुझे इस आइटम में दिलचस्पी थी।

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

39

आम तौर पर, INNER JOIN और EXISTS अलग-अलग चीजें हैं।

पूर्व तालिका दोनों तालिकाओं से डुप्लीकेट और कॉलम लौटाता है, बाद वाला एक रिकॉर्ड देता है और, एक अनुमानित होने पर, केवल एक तालिका से रिकॉर्ड लौटाता है।

यदि आप UNIQUE कॉलम पर आंतरिक शामिल होते हैं, तो वे समान प्रदर्शन प्रदर्शित करते हैं।

यदि आप DISTINCT लागू (डुप्लीकेट से छुटकारा पाने के लिए) के साथ रिकॉर्डसेट पर आंतरिक शामिल होते हैं, तो EXISTS आमतौर पर तेज़ होता है।

IN और EXISTS खंड में (एक equijoin सहसंबंध के साथ) आम तौर पर कई SEMI JOIN एल्गोरिदम जो आमतौर पर तालिकाओं में से एक पर एक DISTINCT से अधिक प्रभावी हैं में से एक को रोजगार।

अपने ब्लॉग में इस लेख देखें:

+1

यह कुछ हद तक विषय बंद है एक विशिष्ट आवश्यकता हो सकती है, लेकिन मैं करूंगा विशिष्ट सूचियों को लौटने पर समग्र बेहतर प्रदर्शन के लिए DISTINCT से बचने और ग्रुप बी का उपयोग करने का सुझाव दें। DISTINCT सामान्य रूप से ग्रुप BY के साथ-साथ प्रदर्शन नहीं करता है। यह INNER जॉइन और EXISTS के बीच कुछ अंतर बनाने में भी मदद कर सकता है। – EricI

+4

@EricI: क्या आप कृपया एक प्रश्न का उदाहरण प्रदान कर सकते हैं जो 'GROUP BY' की तुलना में' DISTINCT' के साथ कम कुशल है, बशर्ते आउटपुट समान हों? धन्यवाद! – Quassnoi

7

हो सकता है, शायद नहीं।

  • एक ही योजना सबसे अधिक संभावना उत्पन्न हो जाएगा
  • एक आंतरिक में शामिल होने के एक ही आउटपुट
  • शून्य के साथ सौदा करने के लिए मौजूद है
संबंधित मुद्दे