Mysql
 sql >> Database >  >> RDS >> Mysql

Query MySQL con alias che non utilizza un indice

È 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