Udostępnij za pośrednictwem


How SQL Server Matches Plan Guides to Queries

SQL Server dopasowania planowanie prowadnic typu OBJECT do kwerendy, które są wyświetlane wewnątrz procedura przechowywana, wyzwalacza lub funkcja (moduł) o nazwie w @ module_or_batch argument sp_create_plan_guide procedura przechowywana.Jeśli istnieje plan wykonania kwerendy w module, plan wykonania kwerendy zostanie dopasowany do określonej kwerendy.

W przypadku kwerend złożone wewnątrz partii, SQL Server Dopasowuje plan wykonania kwerendy prowadnic, aby je przy pierwszej próbie odpowiadają kwerendy do plan wykonania kwerendy opartego na serwerze SQL, następnie próbując parameterize kwerendy, a następnie według ponownej próby. Na poniższej ilustracji zawiera przegląd tego procesu.

How SQL Server matches plan guides to queries

  1. The SQL Server optymalizator kwerendy recognizes an executed partia as a request to compile each instrukcja within the partia.

  2. Dla określonej instrukcja w tej instancji SQL Server Przewodnik próbuje dopasować deklarację do plan wykonania kwerendy programu SQL, których @ module_or_batch argument zgodny z przychodzącego tekstu partia, tym stała wartości literału i których @ stmt argument również pasuje do instrukcja w tej instancji.Jeśli istnieje tego rodzaju plan wykonania kwerendy i dopasowanie zakończy się pomyślnie, instrukcja tekstu jest modyfikowana do zawierające wskazówki kwerendy określonej w plan wykonania kwerendy.Następnie w instrukcja jest odpowiednio skompilowana.

  3. Jeśli nie jest takie samo instrukcja w kroku 2, plan wykonania kwerendy SQL Server próbuje parameterize instrukcja przy użyciu parametryzacji wymuszone. W tym kroku Parametryzacja może nie działać jednego z następujących przyczyn:

    1. W instrukcja jest już parametrów lub zawiera zmiennych lokalnych.

    2. PARAMETRYZACJA SIMPLE zestaw opcję Baza danych jest stosowany (ustawienie domyślne), a nie ma żadnej prowadnicy plan typu TEMPLATE odnosi się do instrukcja i określa wskazówkę dotyczącą ZMUSZONY PARAMETRYZACJI kwerendy.

    3. plan wykonania kwerendy typu TEMPLATE istnieje, która stosuje się do instrukcja i określa SIMPLE PARAMETRYZACJI kwerendy wskazówkę dotyczącą kwerendy.

    Jeśli parametry wymuszone powiedzie się, SQL Server stara się dopasować formularz sparametryzowana plan wykonania kwerendy do plan wykonania kwerendy typ SQL, który został utworzony w tej instrukcja sparametryzowana. Jeśli istnieje tego rodzaju plan wykonania kwerendy i dopasowanie zakończy się pomyślnie, instrukcja tekstu jest modyfikowana do zawierające wskazówki kwerendy określonej w plan wykonania kwerendy.Następnie w instrukcja jest odpowiednio skompilowana.Jeżeli nie takich plan wykonania kwerendy jest takie samo, sparametryzowana instrukcja jest kompilowany bez uprzedniego modyfikowany przez plan wykonania kwerendy.

  4. Jeśli w kroku 3, parametry SQL Server próbuje ponownie instrukcja parameterize. Tym razem SQL Server stosuje domyślne zachowanie parametryzacji proste. Wynikowa kwerenda jest następnie skompilowany bezpośrednio.Plan prowadnice nie są dopasowywane do wyniki parametryzacji proste.

    Uwaga

    Prowadnice plan typu SQL dotyczą sparametryzowana przez wymuszone lub proste parametryzacji kwerendy wskazówkę dotyczącą kwerendy RECOMPILE jest ignorowana.Również wygenerowane ostrzeżenie.