Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL avec alias n'utilisant pas d'index

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