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

MySQL:IN क्लॉज में 5वीं आईडी क्वेरी प्लान में भारी बदलाव क्यों करती है?

जैसा कि आपने दिखाया है, MySQL के पास ORDER BY ... LIMIT n के साथ प्रश्नों के लिए दो वैकल्पिक क्वेरी प्लान हैं। :

  1. सभी योग्य पंक्तियाँ पढ़ें, उन्हें क्रमित करें, और n . चुनें शीर्ष पंक्तियाँ।
  2. पंक्तियों को क्रमबद्ध क्रम में पढ़ें और n . होने पर रुकें योग्य पंक्तियाँ मिल गई हैं।

यह तय करने के लिए कि कौन सा बेहतर विकल्प है, अनुकूलक को आपकी WHERE स्थिति के फ़िल्टरिंग प्रभाव का अनुमान लगाने की आवश्यकता है। यह सीधे आगे नहीं है, विशेष रूप से उन स्तंभों के लिए जो अनुक्रमित नहीं हैं, या उन स्तंभों के लिए जहां मान सहसंबद्ध हैं। आपके मामले में, ऑप्टिमाइज़र की अपेक्षा से पहले 25 क्वालीफाइंग पंक्तियों को खोजने के लिए शायद किसी को क्रमबद्ध क्रम में बहुत अधिक तालिका को पढ़ना होगा।

5.6 के बाद के रिलीज़ (आप एक प्री-जीए रिलीज़ पर चल रहे हैं!), और नए रिलीज़ (5.7, 8.0) दोनों में, LIMIT क्वेरी को कैसे हैंडल किया जाता है, इसमें कई सुधार हुए हैं। मेरा सुझाव है कि आप बाद की रिलीज़ में अपग्रेड करने का प्रयास करें, और देखें कि क्या यह अभी भी एक समस्या है।

सामान्य तौर पर, यदि आप क्वेरी प्लानर निर्णयों को समझना चाहते हैं, तो आपको क्वेरी के लिए ऑप्टिमाइज़र ट्रेस देखना चाहिए।



  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 ODBC लिंक विफल हो गया

  2. mysql तालिका के मिलान की जाँच करें

  3. कोडनिर्देशक/PHP जांचें कि क्या डेटाबेस से कनेक्ट हो सकता है

  4. PHP-MYSQL:यूनिक्स टाइमस्टैम्प को डेटटाइम में कनवर्ट करना और इसके विपरीत

  5. विंडोज़ के लिए MySQL कमांड लाइन क्लाइंट