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

MySQL इंडेक्स क्वेरी को धीमा कर रहा है

ऐसा लगता है कि article_id आलेख तालिका के लिए प्राथमिक कुंजी है।

चूंकि आप article_id के आधार पर समूह बना रहे हैं, इसलिए GROUP BY को निष्पादित करने के लिए MySQL को उस कॉलम के क्रम में रिकॉर्ड वापस करने की आवश्यकता है।

आप देख सकते हैं कि अनुक्रमणिका के बिना, यह आलेख तालिका में सभी अभिलेखों को स्कैन करता है, लेकिन वे कम से कम article_id द्वारा क्रम में हैं, इसलिए बाद में किसी प्रकार के क्रम की आवश्यकता नहीं है। LIMIT ऑप्टिमाइज़ेशन यहाँ लागू किया जा सकता है, क्योंकि यह पहले से ही क्रम में है, यह पाँच पंक्तियों को प्राप्त करने के बाद ही रुक सकता है।

टैग.नाम पर अनुक्रमणिका के साथ क्वेरी में, संपूर्ण आलेख तालिका को स्कैन करने के बजाय, यह अनुक्रमणिका का उपयोग करता है, लेकिन टैग तालिका के विरुद्ध, और वहीं से प्रारंभ होता है। दुर्भाग्य से, ऐसा करते समय, ग्रुप बाय क्लॉज को पूरा करने के लिए रिकॉर्ड्स को बाद में article.article_id द्वारा क्रमबद्ध किया जाना चाहिए। LIMIT ऑप्टिमाइज़ेशन लागू नहीं किया जा सकता क्योंकि इसे पूरे परिणाम सेट को वापस करना होगा, फिर पहली 5 पंक्तियों को प्राप्त करने के लिए इसे ऑर्डर करना होगा।

इस मामले में, MySQL गलत अनुमान लगाता है।

LIMIT क्लॉज के बिना, मैं अनुमान लगा रहा हूं कि इंडेक्स का उपयोग करना तेज है, जो शायद MySQL अनुमान लगा रहा था।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक ही अद्वितीय आईडी के साथ कई पंक्तियाँ सम्मिलित करें

  2. रूबी ऑन रेल्स के साथ MySQL सर्वर चला गया है

  3. पॉप्युलेटिंग ड्रॉपडाउन - PHP अजाक्स MySQL

  4. कमांड लाइन के माध्यम से लिनक्स पर एक MySQL उपयोगकर्ता को अनुमतियाँ प्रदान करें

  5. मैं कैसे देख सकता हूं कि कितने MySQL कनेक्शन खुले हैं?