Je to kvůli aliasu. ORDER BY
může použít index, pokud je řazen podle něčeho, co je indexováno. Zatímco ceremonyDate
datum může být indexováno, YEAR(ceremoneyDate)
změní hodnotu ceremonyDate
na něco úplně jiného, takže YEAR(ceremoneyDate)
není indexován.
A protože nemůžete indexovat alias, znamená to, že v zájmu ORDER BY
Chcete-li použít index, musí to být jednoduchý název sloupce nebo seznam názvů sloupců.
Měli byste to umět a používat index:
SELECT ordinal,YEAR(ceremonydate) as yr
FROM awardinfo
ORDER BY ceremonydate DESC LIMIT 1;
Aniž byste věděli, jak vaše data vypadají, může vám to místo toho fungovat.
Další informace:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html