Cóż, dokument podaje dokładne powody, dla których pojawi się komunikat „Używanie tymczasowego”:
Tabele tymczasowe można tworzyć pod następującymi warunkami:
Jeśli istnieje klauzula ORDER BY i inna klauzula GROUP BY lub jeśli ORDER BY lub GROUP BY zawiera kolumny z tabel innych niż pierwsza tabela w kolejce łączenia, tworzona jest tabela tymczasowa.
DISTINCT w połączeniu z ORDER BY może wymagać tymczasowej tabeli.
Jeśli użyjesz opcji SQL_SMALL_RESULT, MySQL użyje tabeli in-memorytemporary, chyba że zapytanie zawiera również elementy (describedlater), które wymagają przechowywania na dysku.
Szybkie skanowanie pokazuje, że cierpisz na #1.
I ten blog z 2009 mówi, że „korzystanie z sortowania plików” oznacza, że sortowania nie można przeprowadzić za pomocą indeksu. Ponieważ zamawiasz według pola obliczanego, to też będzie prawda.
To właśnie jest „niewłaściwe”.