Wybrać „coś z czegoś” czy „z czegoś coś” wybrać, oto jest pytanie…



Marcinie zwróć uwagę, iż zapytania dotychczas z jakimi miałeś do czynienia miały postać: wybieram (select) wartości z pól z tabeli (from ….). Przy czym po „from” można podać nazwę/nazwy konkretnych tabel albo po prostu napisać w nawiasie kolejne zapytanie (zwane podzapytaniem).

Wybierałeś dotychczas „coś z czegoś”:


SELECT ….. FROM
(SELECT ….. FROM …. WHERE …. GROUP BY ….) alias_tabeli
WHERE …. GROUP BY …. ORDER BY…. ;


W SQL istnieje podobnie jak w życiu możliwość wybierania nie tylko „coś z czegoś” ale „z czegoś coś”. Co więcej okazuje się, iż ten drugi sposób („z czegoś coś”) jest dla serwera bazy wydajniejszy, Twoje zapytanie zostanie wykonane szybciej.


Robi się to następująco:


WITH alias_tabeli
AS (SELECT ….. FROM …. WHERE …. GROUP BY ….)
SELECT …. FROM alias_tabeli WHERE …. GROUP BY …. ORDER BY…. ;


Jak widać dzięki pokolorowaniu na obrazku poniżej obu wyżej wymienionych konstrukcji mają one dużo wspólnych elementów, pojawiło się jedynie dodatkowo WITH oraz AS i wyraźnie inna kolejność.


Użycie drugiej konstrukcji powoduje, iż wyniki są buforowane i dzięki temu jest to wydajniejszy sposób. Warto go znać, bo może istotnie przyspieszyć uzyskanie wyniku zapytania, oczywiście kosztem obciążenia bazy, ale wydajniejszy dla Ciebie, powodujący, iż wyraźnie szybciej otrzymasz wynik.


W.


Brak komentarzy:

Prześlij komentarz