Изглежда, че article_id е първичният ключ за таблицата със статии.
Тъй като групирате по article_id, MySQL трябва да върне записите в ред по тази колона, за да изпълни GROUP BY.
Можете да видите, че без индекса, той сканира всички записи в таблицата със статии, но те са най-малко в ред по article_id, така че не се изисква по-късно сортиране. Оптимизацията LIMIT може да се приложи тук, тъй като вече е наред, може просто да спре, след като получи пет реда.
В заявката с индекса на tag.name, вместо да сканира цялата таблица със статии, той използва индекса, но срещу таблицата с етикети, и започва там. За съжаление, когато правите това, по-късно записите трябва да бъдат сортирани по article.article_id, за да се завърши клаузата GROUP BY. Оптимизацията LIMIT не може да се приложи, тъй като тя трябва да върне целия набор от резултати, след което да го подреди, за да получите първите 5 реда.
В този случай MySQL просто отгатва погрешно.
Без клаузата LIMIT предполагам, че използването на индекса е по-бързо, което може би е това, което MySQL предполагаше.