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

लेफ्ट जॉइन इनर जॉइन की तुलना में धीमा क्यों है?

INNER JOIN के साथ, MySQL आम तौर पर सबसे छोटी पंक्तियों वाली तालिका से शुरू होगी। इस मामले में, यह तालिका finished . से शुरू होता है और saved . में संबंधित रिकॉर्ड की तलाश करता है saved.email . पर अनुक्रमणिका का उपयोग करना ।

लेफ्ट जॉइन के लिए, (कुछ ऑप्टिमाइजेशन को छोड़कर) MySQL आम तौर पर रिकॉर्ड्स को क्रम में जोड़ता है (सबसे बाईं टेबल से शुरू)। इस मामले में, MySQL saved तालिका से शुरू होता है , फिर प्रत्येक संबंधित रिकॉर्ड को finished . में खोजने का प्रयास करता है . चूंकि कोई प्रयोग करने योग्य नहीं है finished.email पर अनुक्रमणिका , इसे प्रत्येक लुक अप के लिए एक पूर्ण स्कैन करना होगा।

संपादित करें

अब जब आपने अपना स्कीमा पोस्ट कर दिया है, तो मैं देख सकता हूं कि MySQL इंडेक्स को अनदेखा कर रहा है (finished.email ) utf8 . से जाने पर से latin1 अक्षरों का समूह। आपने प्रत्येक कॉलम के लिए कैरेक्टर सेट और कॉलेशन पोस्ट नहीं किए हैं, इसलिए मैं टेबल के लिए डिफॉल्ट कैरेक्टर सेट से जा रहा हूं। MySQL के लिए अनुक्रमणिका का उपयोग करने के लिए संयोजन संगत होना चाहिए।

MySQL एक latin1 . के साथ जबरदस्ती (अपग्रेड) कर सकता है संयोजन, जो बहुत सीमित है, एक utf8 . तक संयोजन जैसे unicode_ci (इसलिए पहली क्वेरी saved.email . पर अनुक्रमणिका का उपयोग कर सकती है latin1 . को अपग्रेड करके utf8 . से मिलान ), लेकिन विपरीत सत्य नहीं है (दूसरी क्वेरी finished.email पर अनुक्रमणिका का उपयोग नहीं कर सकती चूंकि यह एक utf8 को डाउनग्रेड नहीं कर सकता है latin1 . तक का मिलान )।

समाधान दोनों ईमेल स्तंभों को एक संगत मिलान में बदलना है, शायद उन्हें समान वर्ण सेट और संयोजन बनाकर सबसे आसानी से।



  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 प्रतिकृति और GTID- आधारित विफलता - त्रुटिपूर्ण लेन-देन में एक गहरा गोता

  2. XSD से MySQL स्कीमा

  3. इस प्रश्न को वाक्पटु के लिए परिवर्तित करें

  4. एकाधिक डेटाबेस, सर्वर को mysql में कैसे कनेक्ट करें और एक दूसरे की दोनों तालिकाओं से क्वेरी करें?

  5. दो Django ऐप्स के बीच एक मॉडल को कैसे स्थानांतरित करें (Django 1.7)