Det er på grund af aliaset. ORDER BY
kan bruge et indeks, hvis det bestiller efter noget, der er indekseret. Mens ceremonyDate
dato kan indekseres, YEAR(ceremoneyDate)
ændrer værdien af ceremonyDate
til noget helt andet, så YEAR(ceremoneyDate)
er ikke indekseret.
Og da du ikke kan indeksere et alias, betyder det, at for at få en ORDER BY
for at bruge et indeks skal det være et simpelt kolonnenavn eller en liste over kolonnenavne.
Du burde være i stand til at gøre dette og bruge indekset:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Uden at vide, hvordan dine data ser ud, kan det i stedet fungere for dig.
Mere info:http://dev.mysql. com/doc/refman/5.0/da/order-by-optimization.html