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:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html