Udostępnij za pośrednictwem


Przetwarzanie instrukcji SQL

Przetwarzanie pojedynczej instrukcja języka SQL jest najbardziej podstawowe sposób, że SQL Server wykonuje instrukcje SQL.Zaznacz kroki używane do przetwarzania pojedynczego instrukcja odwołujący się tylko lokalne tabel podstawowych (nie widoków lub tabel zdalnego) ilustruje proces podstawowy.

Optymalizacja instrukcji SELECT

Instrukcja SELECT jest nonprocedural; nie stanowi dokładne kroki, które należy używać serwera bazy danych, aby pobrać żądane dane.Oznacza to, że serwer bazy danych, należy przeanalizować instrukcja do określenia najbardziej skuteczny sposób, aby wyodrębnić żądane dane.To jest nazywane optymalizowania instrukcja SELECT.Składnik, który robi to nosi nazwę optymalizator kwerendy.Dane wejściowe Optymalizator składa się z kwerendy, schemat bazy danych (tabela i indeks definicje) oraz statystyki bazy danych.Wyjście Optymalizator jest plan wykonania kwerend, czasami określone jako planu kwerend , czy tylko planu.Zawartość planu kwerend są opisane szczegółowo w dalszej części tego tematu.

Wejść i wyjść z optymalizator kwerendy podczas optymalizacji single SELECT instrukcja są przedstawione na poniższym rysunku:

Optymalizacja zapytania w instrukcji SELECT

Instrukcja SELECT definiuje wyłącznie następujące:

  • Format zestaw wyników.Jest to określona głównie na liście select.Inne klauzule, takie jak zamówienia oraz grupy dotyczy również ostatecznej postaci zestaw wyników.

  • Tabele zawierające źródło danych.Jest to określone w klauzula FROM.

  • Jak tabele logicznie powiązanych do celów instrukcja SELECT.To jest zdefiniowany w specyfikacji łączyć, które mogą pojawić się w klauzuli WHERE lub klauzula ON po od.

  • Warunki, wiersze w źródło muszą spełniać tabele, aby kwalifikować się do instrukcja SELECT.Są one określone w WHERE i HAVING klauzul.

Plan wykonania kwerend jest definicja z następujących czynności:

  • Kolejność, w której źródło są dostępne tabele.

    Zazwyczaj są dużo sekwencji, w których serwer bazy danych ma dostęp do tabel bazowych do utworzenia zestaw wyników.Na przykład, jeśli instrukcja SELECT odwołują się trzy tabele, bazy danych serwer może najpierw dostęp TableA, użyć danych z TableA wyodrębnić zgodnych wierszy z TableB, a następnie użyć danych z TableB do wyodrębniania danych z TableC.Inne sekwencji, w których serwer bazy danych można uzyskać dostępu tabele są:

    TableC, TableB, TableA, lub

    TableB, TableA, TableC, lub

    TableB, TableC, TableA, lub

    TableC, TableA, TableB

  • Metody używane do wyodrębnić danych z każdej tabela.

    Ogólnie istnieją różne metody dostępu do danych w każdej tabela.Jeśli tylko kilka wierszy z określonej wartości klucz są wymagane, serwer bazy danych można użyć indeksu.Jeżeli wymagane są wszystkie wiersze w tabela, serwer bazy danych można zignorować indeksy i skanowanie tabela.Jeśli wymagane są wszystkie wiersze w tabela, ale istnieje indeks, którego kolumny klucz są w kolejności według, wykonuje skanowanie indeksu zamiast skanowanie tabela może zapisać oddzielnych sortowania zestaw wyników.Jeśli tabela jest bardzo mała, może być najbardziej efektywne skanowanie tabeli metoda prawie wszystkim dostępu do tabeli.

Proces wyboru plan wykonania jednej z potencjalnie wiele planów możliwe jest zwany optymalizacji.optymalizator kwerendy jest jednym z najważniejszych składników systemu baza danych SQL.Podczas gdy niektóre narzutów jest używany przez optymalizator kwerendy do analizowania kwerendy i wybierz plan, to obciążenie jest zazwyczaj zapisywana several-fold przy optymalizator kwerendy wybiera efektywne wykonanie planu.Na przykład dwa przedsiębiorstwa budowlane mogą być podawane identyczne plany dla domu.Jeśli jedna spółka spędza kilka dni na początku planowania, jak będzie budowanie domu i budynku w innej firmie rozpoczyna się bez planowania, czas zaplanować ich projektu firmy prawdopodobnie zakończy najpierw.

SQL Serveroptymalizator kwerendy Jest Optymalizator opartych na kosztach. Każdy plan możliwe wykonanie ma skojarzony koszt stopnia zasobów komputerowych używany.optymalizator kwerendy należy analizować możliwe planów i wybierz jeden z najniższy szacowany koszt.Niektóre złożone instrukcje SELECT mają tysiące możliwe wykonanie planów.W takich przypadkach optymalizator kwerendy nie analizuje wszystkie możliwe kombinacje.Zamiast tego wykorzystuje algorytmy złożone, aby znaleźć planu wykonania, że koszt racjonalnie zbliżone do minimum możliwym koszcie.

SQL Server optymalizator kwerendy nie wybierać tylko plan wykonania najniższego kosztu zasób; Wybiera planu, który zwraca wyniki do użytkownika rozsądny koszt zasobów i że najszybciej zwraca wyniki.Na przykład przetwarzanie kwerendy równolegle zazwyczaj wykorzystuje więcej zasobów niż przetwarzanie je pojedynczo, ale szybciej wykonuje kwerendę.Optymalizator programu SQL Server będzie używać wykonywanie równoległe planowane jest zwracanie wyniki, jeśli obciążenie serwera nie ma negatywnego wpływu.

Jej szacunki kosztów zasób w różnych metod wyodrębnianie informacji z tabela lub indeksu optymalizator kwerendy opiera się na statystyk dystrybucji.Dla kolumn i indeksy są przechowywane statystyk dystrybucji.Wskazują one selektywności wartości określonego indeksu lub kolumna.Na przykład tabela reprezentujących samochodów tego samego producenta ma wiele samochodów, ale każdy samochód posiada numer identyfikacyjny unikatowy pojazdu (VIN).Indeks na numer VIN jest bardziej selektywne niż indeks na producenta.Jeśli statystyka indeksu nie są aktualne, optymalizator kwerendy nie może dokonać najlepszy wybór dla bieżącego stanu tabela.Więcej informacji o prowadzenie statystyk indeks bieżącego, zobacz Aby poprawić wydajność kwerendy przy użyciu statystyk.

optymalizator kwerendy jest ważne, ponieważ pozwala dynamicznie dostosowanie się do zmieniających się warunków w bazie danych bez konieczności wprowadzania z programistą lub administrator bazy danych serwera bazy danych.Umożliwia programistom skoncentrować opisujący ostateczny wynik kwerendy.Można ufać że optymalizator kwerendy utworzy efektywne wykonanie planu stanu bazy danych co czas uruchomić instrukcja.

Przetwarzanie instrukcji SELECT

Podstawowe kroki, które SQL Server do przetwarzania single SELECT instrukcja następujące:

  1. Parser skanuje instrukcja SELECT i dzieli je na jednostki logiczne, takie jak słowa kluczowe, wyrażenia, operatorów i identyfikatory.

  2. Drzewo kwerendy, czasami jako drzewo sekwencji jest wbudowana opisujący logiczne kroki potrzebne do przekształcania źródło danych na format wymagany przez zestaw wyników.

  3. optymalizator kwerendy analizuje różne sposoby źródło dostępne tabele.Następnie wybiera serii kroków, która zwraca wyniki najszybszy podczas korzystania z mniej zasobów.Drzewo kwerendy jest aktualizowany do rejestrowania dokładnie określone czynności.Końcowe, zoptymalizowana wersja drzewa kwerendy nazywany jest plan wykonania.

  4. aparat relacyjny rozpoczyna wykonywanie plan wykonania.Kroki, które wymagają danych z tabel podstawowych są przetwarzany, relacyjnej silnika żądań przebiegu aparat magazynu danych z wierszy zażądała od aparat relacyjny.

  5. Aparat relacyjnej przetwarza dane zwrócone przez aparat magazynu na format zdefiniowany dla zestaw wyników i zwraca zestaw wyników do klient.

Inne instrukcje przetwarzania

Podstawowe kroki opisane dla przetwarzania instrukcja SELECT dotyczą innych instrukcja SQL takich jak wstawianie, AKTUALIZOWANIA i usuwania.Instrukcje UPDATE i DELETE zarówno trzeba miejsce docelowe zestaw wierszy, które mają być zmodyfikowane lub usunięte.Proces identyfikowania tych wierszach jest ten sam proces używany do identyfikowania źródło wierszy, które przyczyniają się do zestaw wyników instrukcja SELECT.Zarówno instrukcje aktualizacji i WSTAWIANIA może zawierać osadzone instrukcje SELECT wartościami danych aktualizacji lub wstawieniu.

Nawet instrukcje języka definicji danych (DDL), takie jak CREATE PROCEDURE lub ALTER TABLE są ostatecznie rozpoznać serii relacyjnej operacji na tabelach wykazu systemu i czasami (na przykład zmienić dodać kolumnę tabeli) przeciwko tabel danych.