Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta MySQL com alias não usando um índice


É 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