sql >> Databáze >  >> RDS >> Mysql

Dotaz MySQL s aliasem, který nepoužívá index

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



  1. Požadavek nastaven v Concurrent Manager

  2. Javascript a PHP odpočítávací časovač, který zobrazuje všem stejně

  3. Aktualizace profilu pošty databáze (SSMS)

  4. TINYINT vs ENUM(0, 1) pro booleovské hodnoty v MySQL