Zdá se, že article_id je primární klíč pro tabulku článků.
Protože seskupujete podle article_id, MySQL potřebuje vrátit záznamy v pořadí podle tohoto sloupce, aby bylo možné provést GROUP BY.
Můžete vidět, že bez indexu prohledá všechny záznamy v tabulce článků, ale jsou alespoň seřazeny podle article_id, takže není vyžadováno žádné pozdější řazení. Zde lze použít optimalizaci LIMIT, protože je již v pořádku, může se zastavit po získání pěti řádků.
V dotazu s indexem na tag.name místo skenování celé tabulky článků použije index, ale proti tabulce tagů, a začne tam. Bohužel, když to uděláte, záznamy musí být později setříděny podle article.article_id, aby se doplnila klauzule GROUP BY. Optimalizaci LIMIT nelze použít, protože musí vrátit celou sadu výsledků a poté ji seřadit, aby bylo možné získat prvních 5 řádků.
V tomto případě MySQL jen špatně odhaduje.
Bez klauzule LIMIT se domnívám, že použití indexu je rychlejší, což je možná to, co MySQL hádala.