Това е заради псевдонима. ORDER BY
може да използва индекс, ако подрежда по нещо, което е индексирано. Докато ceremonyDate
датата може да бъде индексирана, YEAR(ceremoneyDate)
променя стойността на ceremonyDate
към нещо съвсем различно, така че YEAR(ceremoneyDate)
не е индексиран.
И тъй като не можете да индексирате псевдоним, това означава, че за ORDER BY
за да използвате индекс, той трябва да е просто име на колона или списък с имена на колони.
Трябва да можете да направите това и да използвате индекса:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Без да знаете как изглеждат вашите данни, това може да работи за вас.
Повече информация:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html