Czy zastanawialiście się kiedyś jak zapytanie wykonuje silnik bazy danych? W pierwszej kolejności wpisujemy SELECT, ale skąd wiadomo, z której tabeli pobrać dane? Dlaczego w klauzuli WHERE nie widzimy aliasów z polecenia SELECT? Co jest powodem tego, że w SELECT można używać tylko kolumn wymienionych w GROUP BY i funkcji agregujących?

Odpowiedź jest bardzo prosta. Język SQL jest mocno zbliżony do naturalnego, dlatego w pierwszej kolejności piszemy co wybieramy:

„weź imiona i nazwiska pracowników, ale tylko tych zatrudnionych przed 2016 rokiem”.

SELECT imię, nazwisko FROM pracownicy WHERE YEAR(data_zatrudnienia) < 2016

Silnik bazy danych wykonuje zapytanie w innej kolejności. Warto pamiętać, że jest ona zawsze taka sama.

  1. FROM, JOIN – najpierw serwer musi wiedzieć skąd pobrać dane
  2. WHERE – następnie filtruje dane i bierze tylko te potrzebne
  3. GROUP BY – kolejnym krokiem jest pogrupowanie danych
  4. HAVING – teraz silnik filtruje grupy
  5. SELECT – dopiero w tym kroku wybierane są potrzebne nam dane i wyliczane są funkcje agregujące
  6. ORDER BY – na samym końcu wiersze zostaną posortowane
  7. TOP – i wybrane te w odpowiedniej ilości

Jest to bardzo ważne, ponieważ dzięki tej wiedzy wiemy, które części zapytania są ważne pod względem optymalizacji.

Mam nadzieję, że dzięki temu jesteś w stanie odpowiedzieć na pytania zadane na początku wpisu 🙂