Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL z aliasem bez indeksu

To z powodu aliasu. ORDER BY może użyć indeksu, jeśli porządkuje coś, co jest indeksowane. Podczas gdy ceremonyDate data może być indeksowana, YEAR(ceremoneyDate) zmienia wartość ceremonyDate na coś zupełnie innego, więc YEAR(ceremoneyDate) nie jest indeksowany.

A ponieważ nie możesz zindeksować aliasu, oznacza to, że w przypadku ORDER BY aby użyć indeksu, musi to być prosta nazwa kolumny lub lista nazw kolumn.

Powinieneś być w stanie to zrobić i użyć indeksu:

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

Nie wiedząc, jak wyglądają Twoje dane, może to zadziałać dla Ciebie.

Więcej informacji:http://dev.mysql. com/doc/refman/5.0/en/order-by-optimization.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuwanie zduplikowanych wierszy z tabeli

  2. Jak usunąć kolumnę z tabeli w MySQL?

  3. Jak mogę ulepszyć to zapytanie, aby uniknąć używania widoków zagnieżdżonych?

  4. Twórz procedury składowane za pomocą PDO w PHP

  5. Jak wyeksportować i zaimportować istniejącego użytkownika (z jego uprawnieniami!)