É por causa do apelido.
ORDER BY
pode usar um índice se estiver ordenando por algo que está indexado. Enquanto ceremonyDate
data pode ser indexada, YEAR(ceremoneyDate)
altera o valor de ceremonyDate
para algo completamente diferente, então YEAR(ceremoneyDate)
não está indexado. E como você não pode indexar um alias, isso significa que para um
ORDER BY
para usar um índice, ele deve ser um nome de coluna simples ou uma lista de nomes de coluna. Você deve ser capaz de fazer isso e usar o índice:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Sem saber como são seus dados, isso pode funcionar para você.
Mais informações:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html