Det är på grund av aliaset. ORDER BY
kan använda ett index om det beställs efter något som är indexerat. Medan ceremonyDate
datum kan indexeras, YEAR(ceremoneyDate)
ändrar värdet på ceremonyDate
till något helt annat, så YEAR(ceremoneyDate)
är inte indexerad.
Och eftersom du inte kan indexera ett alias betyder det att för en ORDER BY
för att använda ett index måste det vara ett enkelt kolumnnamn eller lista med kolumnnamn.
Du bör kunna göra detta och använda indexet:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Utan att veta hur din data ser ut kan det fungera för dig istället.
Mer info:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html