sql >> Database >  >> RDS >> Mysql

MySQL-query met alias die geen index gebruikt

Dat komt door de alias. ORDER BY kan een index gebruiken als deze wordt geordend op iets dat is geïndexeerd. Terwijl ceremonyDate datum kan worden geïndexeerd, YEAR(ceremoneyDate) verandert de waarde van ceremonyDate naar iets heel anders, dus YEAR(ceremoneyDate) is niet geïndexeerd.

En aangezien u een alias niet kunt indexeren, betekent dit dat voor een ORDER BY om een ​​index te gebruiken, moet het een eenvoudige kolomnaam zijn, of een lijst met kolomnamen.

U zou dit moeten kunnen doen en de index gebruiken:

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

Zonder te weten hoe uw gegevens eruitzien, kan dat in plaats daarvan voor u werken.

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



  1. Hoe krijg ik een correcte dump met mysqldump en single-transactie wanneer DDL tegelijkertijd wordt gebruikt?

  2. Inzicht in SQL Server LOCKS op SELECT-query's

  3. MySQL is een goede manier om een ​​rij in te voegen als deze niet wordt gevonden, of om deze bij te werken als deze wordt gevonden

  4. mysqli en mysql invoegen in database-opdrachten