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.
- FROM, JOIN – najpierw serwer lokalizuje dane, z których rozpocznie pobieranie;
- WHERE – serwer filtruje dane pozbywając się tych niepotrzebnych;
- GROUP BY – następnie je grupuje;
- HAVING – grupy są kolejno filtrowane;
- SELECT – w tym kroku serwer wybiera dane, które zaznaczyliśmy oraz oblicza funkcje agregujące;
- ORDER BY – wartości są sortowane;
- 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ń.