È a causa dell'alias. ORDER BY
può usare un indice se sta ordinando in base a qualcosa che è indicizzato. Mentre ceremonyDate
la data può essere indicizzata, YEAR(ceremoneyDate)
cambia il valore di ceremonyDate
a qualcosa di completamente diverso, quindi YEAR(ceremoneyDate)
non è indicizzato.
E poiché non puoi indicizzare un alias, ciò significa che per un ORDER BY
per utilizzare un indice, deve essere un semplice nome di colonna o un elenco di nomi di colonna.
Dovresti essere in grado di farlo e utilizzare l'indice:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Senza sapere che aspetto hanno i tuoi dati, potrebbe invece funzionare per te.
Maggiori informazioni:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html