Jakie są skorelowane podzapytania?

Uzależnione podkwerendy to wyrafinowane użycie SQL.

SQL

Najnowocześniejsze relacyjne bazy danych zawierają SQL do dodawania i aktualizowania danych, tworzenia struktur i zbierania informacji. SQL opiera się na teoriach dotyczących danych opracowanych w latach siedemdziesiątych i od tego czasu jest nieustannie udoskonalany. Składa się z zestawu stanów, w tym SELECT, INSERT, CREATE i DELETE, a następnie kilka klauzul określających zarządzane dane i opcje, takie jak sort i group. Powszechne korzystanie z baz danych wynika z elastyczności i wyrafinowania SQL; Umożliwia organizacjom analizowanie złożonych grup danych na wiele sposobów.

Zapytania i podzapytania

Polecenie SQL do pobierania danych nazywa się zapytaniem. Zazwyczaj programiści używają instrukcji SELECT z zapytaniami, chociaż wiele reguł wyszukiwania danych dotyczy również INSERT, DELETE i UPDATE. Proste zapytanie SELECT może wyświetlać zawartość tabeli danych, na przykład następującą instrukcję:

WYBIERZ * Z inwentarza;

To zapytanie pokazuje wszystkie rekordy w tabeli o nazwie "Zapasy" Możesz uzyskać wyniki z bardziej szczegółowego zapytania, dodając testy warunkowe, jak w tej instrukcji "inwentaryzacji":

SELECT * FROM inwentaryzacja WHERE warehouse_code = 'chicago5';

Ta deklaracja pokazuje twoje rejestry inwentaryzacji kodu depozytu, chicago5.

Podzapytanie to zapytanie w ramach innego zapytania. Poniższa instrukcja zawiera spis inwentaryzacji tych pozycji, w których depozyty znajdują się w określonym regionie:

SELECT * FROM inventory WHERE kod_pakietu IN (WYBIERZ kod_pakietu z magazynów WHERE region = 'midwest');

Zwróć uwagę, że to zapytanie składa się z dwóch instrukcji SELECT, z których jedna zawiera rekordy zasobów reklamowych, a druga zawiera zapytanie główne z kodami depozytów.

Skorelowane podzapytanie

W skorelowanym podzapytaniu główne i podrzędne zapytania wyodrębniają dane z tej samej tabeli. Zapytanie wewnętrzne wykonuje funkcję agregującą, taką jak statystyka, i przekazuje tę informację do zapytania zewnętrznego, które wykorzystuje ją jako podstawę porównania. Na przykład to skorelowane podzapytanie tworzy listę rekordów inwentaryzacji dla produktów o cenach wyższych niż średnia depozytu. Zapytanie zewnętrzne przekazuje informacje z depozytu do zapytania wewnętrznego, a zapytanie wewnętrzne wysyła średnią cenę z powrotem do zapytania zewnętrznego:

SELECT numer_partii, cena, kod_pakietu Z inwentarza i1 GDZIE cena> (WYBIERZ AVG (cena) Z inwentarza i2 WHERE kod_kompasu.i1 = kod_pakietu.i2);

Dwa zapytania wykorzystują tabele aliasów "I1" i "I2". Mimo że odnoszą się one do tej samej tabeli, użycie aliasu umożliwia traktowanie zapytań jako dwóch odrębnych podmiotów.

Wady działania

W przypadku skorelowanych podzapytań SQL ocenia wewnętrzne zapytanie raz dla każdego rekordu w zapytaniu zewnętrznym. Gdy rozmiary tabel stają się większe, proces zajmuje więcej czasu. Jeśli stwierdzenie, że skorelowane podzapytanie zajmuje zbyt dużo czasu, należy rozważyć użycie alternatywy, takiej jak ładowanie tabeli tymczasowej z wynikami pośrednimi, a następnie przetwarzanie tabeli tymczasowej bezpośrednio względem tabeli głównej za pomocą prostego podzapytania. Chociaż mniej elegancki, może być znacznie szybszy.