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

MIN/MAX vs ORDER BY i LIMIT

W najgorszym przypadku, gdy patrzysz na niezaindeksowane pole, używając MIN() wymaga jednego pełnego przejścia stołu. Korzystanie z SORT i LIMIT wymaga sortowania plików. Jeśli grasz przeciwko dużej tabeli, prawdopodobnie będzie znaczna różnica w postrzeganej wydajności. Jako anegdotyczny punkt danych, MIN() zajęło .36s, podczas gdy SORT i LIMIT wziął .84s w porównaniu z tabelą 106 000 wierszy na moim serwerze deweloperskim.

Jeśli jednak patrzysz na kolumnę indeksowaną, różnica jest trudniejsza do zauważenia (bez znaczenia punkt danych to 0,00s w obu przypadkach). Jednak patrząc na wynik explain wygląda to tak:MIN() jest w stanie po prostu pobrać najmniejszą wartość z indeksu (wiersze „Wybierz zoptymalizowane tabele” i „NULL”), podczas gdy SORT i LIMIT nadal musi wykonać uporządkowane przechodzenie indeksu (106 000 wierszy). Rzeczywisty wpływ na wydajność jest prawdopodobnie znikomy.

Wygląda jak MIN() to droga do zrobienia — jest szybsza w najgorszym przypadku, nieodróżnialna w najlepszym przypadku, jest standardowym SQL i najwyraźniej wyraża wartość, którą próbujesz uzyskać. Jedyny przypadek, w którym wydaje się, że użycie SORT i LIMIT byłoby pożądane, ponieważ mson wspomniałem, gdzie piszesz ogólną operację, która znajduje górne lub dolne N wartości z dowolnych kolumn i nie warto pisać operacji na przypadek specjalny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać pierwszy rekord w każdej grupie w MySQL?

  2. Uprawnienia użytkownika MySQL

  3. Nie można wydać instrukcji manipulacji danymi za pomocą executeQuery()

  4. Wykryto spowolnienie podczas wybierania i kodowania obrazu w bazie 64 z bazy danych

  5. Jak zmienić domyślny katalog danych MySQL/MariaDB w systemie Linux?