sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel med alias, der ikke bruger et indeks

Det er på grund af aliaset. ORDER BY kan bruge et indeks, hvis det bestiller efter noget, der er indekseret. Mens ceremonyDate dato kan indekseres, YEAR(ceremoneyDate) ændrer værdien af ​​ceremonyDate til noget helt andet, så YEAR(ceremoneyDate) er ikke indekseret.

Og da du ikke kan indeksere et alias, betyder det, at for at få en ORDER BY for at bruge et indeks skal det være et simpelt kolonnenavn eller en liste over kolonnenavne.

Du burde være i stand til at gøre dette og bruge indekset:

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

Uden at vide, hvordan dine data ser ud, kan det i stedet fungere for dig.

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



  1. Hvordan sorterer man MySQL-resultater med bogstaver først, symboler sidst?

  2. mysql til php til xml viser blank alder

  3. Konverter sekunder til dage, timer, minutter, sekunder (MySQL)

  4. Fejl 1038 Uden for sorteringshukommelse, overvej at øge sorteringsbufferens størrelse