Dat komt door de alias. ORDER BY
kan een index gebruiken als deze wordt geordend op iets dat is geïndexeerd. Terwijl ceremonyDate
datum kan worden geïndexeerd, YEAR(ceremoneyDate)
verandert de waarde van ceremonyDate
naar iets heel anders, dus YEAR(ceremoneyDate)
is niet geïndexeerd.
En aangezien u een alias niet kunt indexeren, betekent dit dat voor een ORDER BY
om een index te gebruiken, moet het een eenvoudige kolomnaam zijn, of een lijst met kolomnamen.
U zou dit moeten kunnen doen en de index gebruiken:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Zonder te weten hoe uw gegevens eruitzien, kan dat in plaats daarvan voor u werken.
Meer info:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html