Kolejność wykonywania zapytań SQL

W dzisiejszym wpisie wytłumaczę kolejność, według której silnik bazy danych wykonuje działania. Nie jest to do końca oczywiste i nie wynika to ze składni. Wyobraźmy sobie, że najpierw wpisujemy SELECT, aby wybrać kolumny. Następnie definiujemy z jakiej tabeli pobieramy dane wpisując klauzulę FROM. Kolejno rozpoczynamy filtrowanie za pomocą klauzuli WHERE. Jeśli korzystamy z funkcji agregujących to jeszcze nie zapominajmy o GROUP BY, a jeśli chcemy posortować nasze wyniki to dodajmy ORDER BY.

Opisałem przed chwilą dość zwyczajne zapytanie. No właśnie, wszystko ustawiliśmy w odpowiedniej kolejności, tylko pozostaje teraz odpowiedzieć na pytanie: w jakiej kolejności odczyta to baza danych? Baza danych wykonuje zapytanie w nieco innej kolejności. Wystarczy to raz zapamiętać, ponieważ kolejność jest zawsze taka sama.

  1. FROM, JOIN – najpierw serwer lokalizuje dane, z których rozpocznie pobieranie;
  2. WHERE – serwer filtruje dane pozbywając się tych niepotrzebnych;
  3. GROUP BY – następnie je grupuje;
  4. HAVING – grupy są kolejno filtrowane;
  5. SELECT – w tym kroku serwer wybiera dane, które zaznaczyliśmy oraz oblicza funkcje agregujące;
  6. ORDER BY – wartości są sortowane;
  7. TOP – ostatnim krokiem jest dobór odpowiedniej ilości wartości.

Oczywiście miejmy na uwadze, że nie wszystkie wyrażenia zawsze się pojawiają w naszym zapytaniu. Znając powyższą kolejność możemy lepiej się przygotować pod kątem optymalizacji naszych zapytań.

Interesujący artykuł? Podaj dalej!