Tampaknya article_id adalah kunci utama untuk tabel artikel.
Karena Anda mengelompokkan menurut article_id, MySQL perlu mengembalikan catatan menurut kolom itu, untuk melakukan GROUP BY.
Anda dapat melihat bahwa tanpa indeks, ia memindai semua catatan di tabel artikel, tetapi setidaknya diurutkan berdasarkan article_id, jadi tidak diperlukan pengurutan yang lebih baru. Optimalisasi LIMIT bisa diterapkan di sini, karena sudah berurutan, baru bisa berhenti setelah mendapat lima baris.
Dalam kueri dengan indeks pada tag.name, alih-alih memindai seluruh tabel artikel, ini menggunakan indeks, tetapi terhadap tabel tag, dan mulai dari sana. Sayangnya, saat melakukan ini, catatan harus diurutkan berdasarkan article.article_id untuk melengkapi klausa GROUP BY. Pengoptimalan LIMIT tidak dapat diterapkan karena harus mengembalikan seluruh kumpulan hasil, lalu memesannya, untuk mendapatkan 5 baris pertama.
Dalam hal ini, MySQL hanya salah menebak.
Tanpa klausa LIMIT, saya rasa penggunaan indeks akan lebih cepat, yang mungkin seperti dugaan MySQL.