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

MySQL में कौन सा इनर जॉइन sql सबसे प्रभावी और सबसे अच्छा है?

वे सभी कार्यात्मक रूप से समकक्ष हैं। यहां तक ​​​​कि WHERE क्लॉज और जॉइन कंडीशन के बीच अलगाव भी पूरी तरह से INNER जॉइन के साथ काम करने पर परिणाम नहीं बदलेगा (यह OUTER जॉइन के साथ मायने रख सकता है)। इसके अतिरिक्त, उन सभी को ठीक उसी क्वेरी योजना (प्रभावी रूप से शून्य प्रदर्शन अंतर) में काम करना चाहिए। जिस क्रम में आप आइटम शामिल करते हैं कोई फर्क नहीं पड़ता . क्वेरी इंजन अनुकूलित करने के लिए स्वतंत्र है क्योंकि यह क्वेरी के कार्यात्मक विनिर्देश के भीतर सबसे उपयुक्त दिखता है। यहां तक ​​​​कि जब आप आदेश के संबंध में विशिष्ट व्यवहार की पहचान करते हैं, तो आपको उस पर भरोसा नहीं करना चाहिए। विनिर्देश कल के पैच को इस क्षेत्र में आज के व्यवहार को बदलने की अनुमति देता है। याद रखें:SQL का संपूर्ण बिंदु सेट-आधारित और घोषणात्मक होना चाहिए :आप डेटाबेस को बताएं क्या आप इसे करना चाहते हैं, न कि कैसे आप इसे करना चाहते हैं।

अब जब शुद्धता और प्रदर्शन खत्म हो गया है, तो हम शैली के मामलों में नीचे हैं:प्रोग्रामर उत्पादकता और कोड की पठनीयता/रखरखाव जैसी चीजें। उस संबंध में, उस सूची में विकल्प #4 दूर . है सबसे अच्छा विकल्प, #3 के साथ अगला सबसे अच्छा, विशेष रूप से जब आप अधिक जटिल प्रश्नों में शामिल होना शुरू करते हैं। बस A,B . का उपयोग न करें अब वाक्यविन्यास; यह SQL मानक के 1992 संस्करण के बाद से अप्रचलित है। हमेशा पूरा लिखें INNER JOIN (या LEFT JOIN /RIGHT JOIN /CROSS JOIN आदि)।

जो कुछ भी कहा गया है, जबकि आदेश (या, कम से कम, चाहिए) प्रदर्शन के लिए कोई फर्क नहीं पड़ता, मुझे यह मददगार लगता है जब मैं अपने दृष्टिकोण में एक सम्मेलन का उपयोग करने के लिए एसक्यूएल लिख रहा हूं जो आदेश को निर्देशित करता है। यह मुझे बाद में डिबगिंग और समस्या निवारण के दौरान त्रुटियों या गलत धारणाओं की पहचान करने में मदद करता है। यह सामान्य मार्गदर्शिका जिसका मैं अनुसरण करने का प्रयास करता हूं, ऐसा व्यवहार करना है जैसे कि आदेश मायने रखता है, और फिर इसे ध्यान में रखते हुए डेटाबेस द्वारा आवश्यक स्मृति के कार्य सेट को यथासंभव लंबे समय तक क्वेरी को पूरा करने के लिए आवश्यक रखने का प्रयास करें:पहले छोटी टेबल से शुरू करें और फिर बड़े से जुड़ें; तालिका के आकार पर विचार करते समय, WHERE क्लॉज में उन स्थितियों को ध्यान में रखें जो एक इंडेक्स से मेल खाती हैं; जब आपके पास विकल्प हो तो बाहरी से पहले आंतरिक जुड़ाव को प्राथमिकता दें; सूची में शामिल होने की शर्तें पहले इंडेक्स (विशेष रूप से प्राथमिक/क्लस्टर की) के पक्ष में हैं, और दूसरी शर्तें शामिल होने पर।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ऑर्डर द्वारा [कस्टम सेट फ़ील्ड मान]

  2. MySQL स्थानिक ज्यामिति wkt को मान्य करता है

  3. MySQL उपयोगकर्ता परिभाषित कार्य

  4. mysql:टाइमडिफ़ () को सेकंड में बदलें

  5. Auto_increment मानों का पुन:उपयोग कैसे करें?