Udostępnij za pośrednictwem


Przetwarzanie instrukcja języka SQL

Przetwarzanie pojedynczej instrukcja języka SQL jest najbardziej podstawowe sposób tego SQL Server wykonuje instrukcje SQL. Kroki, używane do przetwarzania pojedynczego instrukcja SELECT, która odwołuje się tylko lokalne tabel podstawowych (nie widoków lub tabel zdalnego) przedstawia proces podstawowy.

Optymalizacja instrukcji SELECT

Instrukcja SELECT nonprocedural; nie natomiast podać dokładne kroki, które serwer bazy danych należy użyć w celu pobrania żądanych danych.Oznacza to, że serwer bazy danych musi przeanalizować instrukcja w celu określenia najbardziej efektywny sposób, aby wyodrębnić żądane dane.To odnosi się do optymalizowania instrukcja SELECT.Składnik, który wykonuje tę nazywa się optymalizator kwerendy.Dane wejściowe Optymalizator składa się z kwerendy, schemat bazy danych (definicji tabela i indeks) oraz statystyki bazy danych.Dane wyjściowe z Optymalizator plan wykonania kwerend, czasami nazywane plan kwerendy or just a Plan.Zawartość planu kwerendy są opisane szczegółowo w dalszej części tego tematu.

Na poniższym rysunku przedstawiono wejść i wyjść z optymalizator kwerendy w trakcie optymalizacji z pojedynczą instrukcją SELECT:

Query optimization of a SELECT statement

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

  • Format zestaw wyników.Jest to określone głównie na liście select.Jednak inne klauzule, takie jak ORDER BY i GROUP BY również na ostatecznej postaci zestaw wyników.

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

  • W jaki sposób te tabele są powiązane logicznie do celów instrukcja SELECT.Jest to zdefiniowany w specyfikacji łączyć, które mogą być wyświetlane w klauzula WHERE lub FROM po klauzula ON.

  • Warunki, w wierszach urządzenie źródłowe tabel muszą spełniać kwalifikują 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órym są dostępne w tabelach źródłowych.

    Zazwyczaj ma wiele sekwencji, w której serwer bazy danych mogą mieć dostęp tabel bazowych do utworzenia zestaw wyników.Na przykład jeśli instrukcja SELECT odwołują się do trzech tabel, na serwerze bazy danych można uzyskać najpierw dostępu TableA, użyć danych z TableA wyodrębnić zgodnych wierszy z TableB, a następnie użyj danych z TableB w celu wyodrębnienia danych z TableC.Innych sekwencji, w którym serwer bazy danych można uzyskać dostępu w tabelach są następujące:

    TableC, TableB, TableA, or

    TableB, TableA, TableC, or

    TableB, TableC, TableA, or

    TableC, TableA, TableB

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

    Mówiąc ogólnie istnieją różne metody uzyskiwania 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, to serwer bazy danych można zignorować indeksy i skanowanie tabela.Jeśli wymagane są wszystkie wiersze w tabela, ale nie ma indeksu, w których kolumnach klucz znajdują się w ORDER BY, wykonywanie skanowania indeksu zamiast skanowanie tabela może zostać zapisana oddzielne sortowania zestaw wyników.Jeśli tabela jest bardzo mała, skanowanie tabeli może być najbardziej efektywne metoda prawie wszystkim dostępu do tabeli.

Proces wybrać jeden plan wykonania potencjalnie wiele planów możliwe jest określany jako optymalizacji.optymalizator kwerendy jest jednym z najważniejszych elementów systemu baza danych SQL.Pewne dodatkowe obciążenie związane jest używany przez optymalizator kwerendy do analizowania kwerendy i wybierz plan, to koszty są zazwyczaj zapisywane several-fold podczas optymalizator kwerendy wybiera planu efektywne wykonywanie.Na przykład firmami budowy mogą być podawane identyczne plany w domu.Jeśli jedna firma spędza kilka dni na początku planowania, w jaki sposób będzie tworzyć domu, a inne firmy rozpoczyna się tworzenie bez planowania, firma, która zajmuje czas zaplanować ich projektu prawdopodobnie zostanie zakończone najpierw.

The SQL Server optymalizator kwerendy is a cost-based optimizer. Każdy plan wykonania możliwe ma o koszt skojarzony z punktu widzenia ilość zasobów komputerowych, które są używane.optymalizator kwerendy należy analizować możliwe planów i wybierz jeden z najniższy szacowany koszt.Niektóre skomplikowane instrukcje SELECT mają tysięcy planów możliwe wykonywanie.optymalizator kwerendy w takich przypadkach nie analizuje wszystkie możliwe kombinacje.Zamiast tego używa algorytmów złożonych znaleźć plan wykonania, który koszt rozsądnie zbliżone do minimalnych możliwych kosztów.

The SQL Server optymalizator kwerendy does not choose only the execution plan with the lowest zasób cost; it chooses the plan that returns wyniki to the user with a reasonable cost in resources and that returns the wyniki the fastest. Na przykład zazwyczaj przetwarzania kwerendy równolegle wykorzystuje więcej zasobów niż przetwarzanie je pojedynczo, ale szybciej wykonuje kwerendę.Optymalizator programu SQL Server będzie używać planu wykonywanie równoległe zwrócić wyniki, jeśli obciążenie serwera nie będzie to miało negatywnego wpływu.

optymalizator kwerendy opiera się na statystyk dystrybucji, gdy go oszacowań kosztów zasób w różnych metod do wyodrębniania informacji z tabela lub indeksu.Dla kolumn i indeksy są przechowywane statystyk dystrybucji.Wskazują one selektywności wartości określonego indeksu lub kolumna.Na przykład w tabela reprezentuje samochodów, wiele samochodów mają tego samego producenta, ale każdy samochód ma pojazdu unikatowy numer identyfikacyjny (VIN).Indeks na VIN jest bardziej selektywna niż indeks na producenta.Jeśli Statystyka indeks nie są aktualne, optymalizator kwerendy nie może wprowadzać najlepszym wyborem dla bieżącego stanu w tabela.Aby uzyskać więcej informacji na temat przechowywania statystyki indeksu bieżącego zobacz Using Statistics to Improve Query Performance.

optymalizator kwerendy jest ważne, ponieważ pozwala serwerowi bazy danych dopasować dynamicznie do zmieniających się warunków w bazie danych bez konieczności wprowadzania danych programista lub administrator bazy danych.Dzięki temu programiści skupić się na opisujący końcowego wyniku kwerendy.Mogą one ufać, że optymalizator kwerendy utworzy plan efektywne wykonywanie dla stanu bazy danych co czas instrukcja jest uruchamiany.

Przetwarzanie instrukcja SELECT

Podstawowe kroki, które SQL Server używany do przetworzenia jednej instrukcja SELECT, należą:

  1. Analizator składni skanuje instrukcja SELECT i dzieli je na jednostek logicznych, takich jak słowa kluczowe, wyrażenia, operatorów i identyfikatory.

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

  3. optymalizator kwerendy analizuje różne sposoby, które są dostępne w tabelach źródłowych.Następnie wybiera serie kroków, które zwraca wyniki najszybszy podczas korzystania z mniejszą ilość zasobów.W drzewie kwerendy zostanie zaktualizowany tak, aby rejestrować tym zadaniu dokładne.Końcowe, zoptymalizowaną wersją drzewa kwerendy jest określany jako plan wykonania.

  4. aparat relacyjny rozpoczyna wykonywanie planu wykonania.Kroki, które wymagają dane z tabel podstawowych jest przetwarzany, aparat relacyjny żądań przekazać aparat magazynu danych, z wierszy, zażądała od aparatu relacyjnej.

  5. Procesy aparat relacyjny, dane zwrócone przez aparat magazynu na format zdefiniowany dla wyniku zestawu i zwraca zestaw wyników do klient.

Inne instrukcje przetwarzania

Podstawowe kroki opisane do przetwarzania instrukcja SELECT dotyczą takich jak inne instrukcje INSERT, UPDATE i DELETE.UPDATE i DELETE instrukcje zarówno są oznaczane do docelowego zestaw wierszy, które mają być zmodyfikowane lub usunięte.Proces identyfikowania tych wierszy jest ten sam proces używany do identyfikowania wiersze urządzenie źródłowe, które przyczyniają się do zestaw wyników instrukcja SELECT.Instrukcje UPDATE i INSERT może zawierają osadzone instrukcji SELECT, które dostarczają wartości danych, które mają być aktualizowany lub umieszczany.

Nawet instrukcje definicja danych Language (DDL), takie jak CREATE PROCEDURE lub ALTER tabela, są ostatecznie rozpoznać serii relacyjnej operacji na tabelach katalog systemu, a czasem (takich jak instrukcji ALTER tabela ADD kolumna) dla tabel danych.