sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga med alias som inte använder ett index

Det är på grund av aliaset. ORDER BY kan använda ett index om det beställs efter något som är indexerat. Medan ceremonyDate datum kan indexeras, YEAR(ceremoneyDate) ändrar värdet på ceremonyDate till något helt annat, så YEAR(ceremoneyDate) är inte indexerad.

Och eftersom du inte kan indexera ett alias betyder det att för en ORDER BY för att använda ett index måste det vara ett enkelt kolumnnamn eller lista med kolumnnamn.

Du bör kunna göra detta och använda indexet:

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

Utan att veta hur din data ser ut kan det fungera för dig istället.

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



  1. mysql hotellrum tillgänglighet

  2. Exportera MySQL eller MariaDB-databas

  3. Topp N per grupp med flera bordsanslutningar

  4. En översikt över JSON-funktioner inom PostgreSQL