sql >> Base de Datos >  >> RDS >> Mysql

Consulta MySQL con alias que no usa un índice

Es por el alias. ORDER BY puede usar un índice si está ordenando por algo que está indexado. Mientras ceremonyDate la fecha se puede indexar, YEAR(ceremoneyDate) cambia el valor de ceremonyDate a algo completamente diferente, entonces YEAR(ceremoneyDate) no está indexado.

Y dado que no puede indexar un alias, esto significa que para un ORDER BY para usar un índice, debe ser un nombre de columna simple o una lista de nombres de columna.

Debería poder hacer esto y usar el índice:

SELECT ordinal,YEAR(ceremonydate) as yr 
FROM awardinfo 
ORDER BY ceremonydate DESC LIMIT 1;

Sin saber cómo se ven sus datos, eso puede funcionar para usted.

Más información:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html