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

Kolejność wykonania zapytania / klauzuli MySQL

Rzeczywiste wykonanie instrukcji MySQL jest nieco trudne. Jednak norma określa kolejność interpretacji elementów w zapytaniu. Jest to zasadniczo w kolejności, którą określisz, chociaż myślę, że HAVING i GROUP BY może pojawić się po SELECT :

  • FROM klauzula
  • WHERE klauzula
  • SELECT klauzula
  • GROUP BY klauzula
  • HAVING klauzula
  • ORDER BY klauzula

Jest to ważne dla zrozumienia sposobu analizowania zapytań. Nie możesz użyć aliasu kolumny zdefiniowanego w SELECT w WHERE na przykład, ponieważ WHERE jest analizowany przed SELECT . Z drugiej strony taki alias może znajdować się w ORDER BY klauzula.

Jeśli chodzi o faktyczne wykonanie, to tak naprawdę zależy to od optymalizatora. Na przykład:

. . .
GROUP BY a, b, c
ORDER BY NULL

i

. . .
GROUP BY a, b, c
ORDER BY a, b, c

oba mają efekt ORDER BY w ogóle nie jest wykonywany -- a więc nie jest wykonywany po GROUP BY (w pierwszym przypadku efektem jest usunięcie sortowania z GROUP BY a w drugim efektem jest zrobienie niczego poza GROUP BY już to robi).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NAPRAW:MySQL – SELECT Polecenie odrzucone użytkownikowi

  2. Używanie OpenVPN do zabezpieczania dostępu do klastra baz danych w chmurze

  3. POKAŻ TABELE w MySQL

  4. mysql_fetch_array zwraca tylko jeden wiersz

  5. Używanie strtotime dla dat sprzed 1970