C'est à cause du pseudonyme. ORDER BY
peut utiliser un index s'il commande par quelque chose qui est indexé. Alors que ceremonyDate
la date peut être indexée, YEAR(ceremoneyDate)
change la valeur de ceremonyDate
à quelque chose de complètement différent, donc YEAR(ceremoneyDate)
n'est pas indexé.
Et puisque vous ne pouvez pas indexer un alias, cela signifie que pour un ORDER BY
pour utiliser un index, il doit s'agir d'un simple nom de colonne ou d'une liste de noms de colonnes.
Vous devriez pouvoir le faire et utiliser l'index :
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Sans savoir à quoi ressemblent vos données, cela peut fonctionner pour vous à la place.
Plus d'informations :http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html