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