Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage mit Alias, der keinen Index verwendet

Das liegt am Alias. ORDER BY kann einen Index verwenden, wenn er nach etwas ordnet, das indiziert ist. Während ceremonyDate Datum kann indexiert werden, YEAR(ceremoneyDate) ändert den Wert von ceremonyDate zu etwas ganz anderem, also YEAR(ceremoneyDate) ist nicht indiziert.

Und da Sie einen Alias ​​nicht indizieren können, bedeutet dies, dass in Ordnung für einen ORDER BY Um einen Index zu verwenden, muss es sich um einen einfachen Spaltennamen oder eine Liste von Spaltennamen handeln.

Sie sollten dazu in der Lage sein und den Index verwenden:

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

Ohne zu wissen, wie Ihre Daten aussehen, könnte dies stattdessen für Sie funktionieren.

Weitere Informationen:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html