To z powodu aliasu. ORDER BY może użyć indeksu, jeśli porządkuje coś, co jest indeksowane. Podczas gdy ceremonyDate data może być indeksowana, YEAR(ceremoneyDate) zmienia wartość ceremonyDate na coś zupełnie innego, więc YEAR(ceremoneyDate) nie jest indeksowany.
A ponieważ nie możesz zindeksować aliasu, oznacza to, że w przypadku ORDER BY aby użyć indeksu, musi to być prosta nazwa kolumny lub lista nazw kolumn.
Powinieneś być w stanie to zrobić i użyć indeksu:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Nie wiedząc, jak wyglądają Twoje dane, może to zadziałać dla Ciebie.
Więcej informacji:https://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html