Udostępnij za pośrednictwem


Określanie zachowania parametryzacji kwerendy przy użyciu prowadnic Plan

Gdy opcja PARAMETRYZACJA bazy danych jest zestaw prosty, SQL Server optymalizator kwerendy może wybrać parameterize kwerend.Oznacza to, że wartości literałów, które są zawarte w kwerendzie są zastępowane z parametrami.Ten proces jest nazywany parametryzacja proste.Kiedy proste parametryzacja obowiązuje, nie można kontrolować kwerend, które są parametryzowane i kwerend, które nie są.Można jednak określić, że wszystkie kwerendy w bazie danych być sparametryzowana, ustawiając opcję bazy danych PARAMETRYZACJA WYMUSZONY.Ten proces jest nazywany wymuszone parametryzacja.

Zachowanie parametryzacja bazy danych można zastąpić, korzystając z przewodników planu w następujący sposób:

  • Gdy opcja PARAMETRYZACJA bazy danych jest zestaw prosty, można określić, że wymuszony parametryzacja podejmowana jest próba na klasę kwerendy.W tym tworzenie przewodnik planu szablonu formularza sparametryzowana kwerendy i określając wskazówka ZMUSZONY PARAMETRYZACJI kwerendy w sp_create_plan_guide procedura składowana.Tego rodzaju przewodnik planu można rozważyć sposób włączyć wymuszone parametryzacja tylko na klasy kwerend zamiast wszystkich kwerend.

  • Gdy opcja PARAMETRYZACJA bazy danych jest zestaw aby WYMUSZONY, można określić, że niektóre klasy kwerend, tylko proste parametryzacja podejmowana jest próba, unika parametryzacja.W tym tworzenie przewodnik planu szablonu formularza sparametryzowana życie kwerendy i określając proste PARAMETRYZACJI kwerendy wskazówkę dotyczącą w sp_create_plan_guide.

Rozważmy następującą kwerendę na AdventureWorks2008R2 bazy danych:

SELECT pi.ProductID, SUM(pi.Quantity) AS Total
FROM Production.ProductModel AS pm 
    INNER JOIN Production.ProductInventory AS pi 
        ON pm.ProductModelID = pi.ProductID 
WHERE pi.ProductID = 101 
GROUP BY pi.ProductID, pi.Quantity HAVING SUM(pi.Quantity) > 50;

Administrator bazy danych można stwierdzić, że nie chcesz włączać parametryzacja wymuszone na wszystkie kwerendy bazy danych.Jednak chcesz uniknąć kosztów kompilacji na wszystkie kwerendy są równoważne syntaktycznie poprzedniej kwerendy, ale różnią się jedynie ich stała wartości literału.Innymi słowy ma być sparametryzowana, tak aby ponownie plan kwerend dla tego rodzaju kwerendę query.W takim przypadek należy wykonać następujące czynności:

  1. Pobrać sparametryzowana formularzu kwerendy.Jedynym bezpiecznym sposobem uzyskania tej wartości do użytku w sp_create_plan_guide jest za pomocą sp_get_query_template systemowa procedura składowana.

  2. Tworzenie przewodnik planu sparametryzowana formularza kwerendy, określanie wskazówkę dotyczącą ZMUSZONY PARAMETRYZACJI kwerendy.

    Ważna informacjaWażne:

    Jako część parametryzacja kwerend SQL Server przypisuje typ danych do parametrów, które zastępuje wartości literału, w zależności od wartości i rozmiaru literal.Ten sam proces występuje wartość stała literały przekazany do @ stmt parametr wyjściowy sp_get_query_template.Ponieważ określony typ danych w @ params argumentu sp_create_plan_guide musi być zgodny z kwerendy, jest opatrzone przez SQL Server, należy utworzyć kilka przewodnik planu na pokrycie pełen zakres wartości ewentualny parametr dla kwerendy.Dla typy informacji o danych, które SQL Server przypisuje do parametrów po kwerendy jest sparametryzowana, zobacz Parametryzacja wymuszony.

Poniższy skrypt umożliwia zarówno uzyskanie sparametryzowanych kwerend, a następnie utworzyć przewodnik planu na niej:

DECLARE @stmt nvarchar(max);
DECLARE @params nvarchar(max);
EXEC sp_get_query_template 
    N'SELECT pi.ProductID, SUM(pi.Quantity) AS Total 
      FROM Production.ProductModel AS pm 
      INNER JOIN Production.ProductInventory AS pi ON pm.ProductModelID = pi.ProductID 
      WHERE pi.ProductID = 101 
      GROUP BY pi.ProductID, pi.Quantity 
      HAVING sum(pi.Quantity) > 50',
    @stmt OUTPUT, 
    @params OUTPUT;
EXEC sp_create_plan_guide 
    N'TemplateGuide1', 
    @stmt, 
    N'TEMPLATE', 
    NULL, 
    @params, 
    N'OPTION(PARAMETERIZATION FORCED)';

Podobnie, w bazie danych włączono wymuszone parametryzacja można się upewnić, w kwerendzie przykładowej i które są syntaktycznie równoważnych, z wyjątkiem ich stała wartości literału, są parametryzowane zgodnie z regułami parametryzacja proste.Aby to zrobić, w klauzula opcji Określ PARAMETRYZACJA proste zamiast PARAMETRYZACJA WYMUSZONE.

Ostrzeżenie

Szablon planu prowadzi instrukcje dopasowania do kwerendy dostarczane w plikach wsadowych, które składają się z jednej instrukcja tylko.Instrukcje wewnątrz instancji zostanie nie kwalifikują się mają być dopasowywane przez szablon plan guides.