Как создать структуру плана (SQL Server Management Studio)

В данном подразделе описано, как создать структуру плана с помощью среды Среда SQL Server Management Studio. Структура плана влияет на оптимизацию запросов путем присоединения подсказок для запросов или фиксированного плана запросов к ним. В структуре плана указывается оператор Transact-SQL, который нужно оптимизировать и либо предложение OPTION, которое содержит подсказки для запросов, которые будут использоваться, либо специальный план запроса, который используется для оптимизации запроса. Когда запрос выполняется, оптимизатор запросов сопоставляет инструкцию Transact-SQL со структурой плана и либо присоединяет условие OPTION к запросу в процессе выполнения, либо использует указанный план запроса.

В следующем примере создается структура плана для инструкции Transact-SQL, к которой затем применяется подсказка в запросе FORCESEEK. Данная подсказка в запросе заставляет оптимизатор использовать операцию поиска по индексу для обращения к данным в указанной таблице.

Создание примера структуры плана

  1. В обозревателе объектов подключитесь к экземпляру Database Engine и разверните его.

  2. Последовательно разверните узел Базы данных, базу данных База данных AdventureWorks2008R2 и узел Программирование.

  3. Щелкните правой кнопкой мыши раздел Структуры планов и выберите команду Создать структуру плана.

  4. В поле Имя введите ForceseekPlan в качестве имени структуры плана.

  5. В поле Инструкция введите приведенную ниже инструкцию Transact-SQL. Это инструкция, к которой будет применяться структура плана.

    SELECT p.LastName, p.FirstName, HumanResources.Employee.JobTitle
    FROM HumanResources.Employee
    JOIN Person.Person AS p ON HumanResources.Employee.BusinessEntityID = p.BusinessEntityID
    WHERE HumanResources.Employee.OrganizationLevel = 3 ORDER BY p.LastName, p.FirstName
    
  6. В поле Тип области выберите SQL в качестве типа сущности, в которой будет представлена инструкция Transact-SQL.

  7. В поле Подсказки введите приведенное ниже предложение OPTION.

    OPTION (TABLE HINT(HumanResources.Employee, FORCESEEK))
    
  8. Чтобы создать структуру плана, нажмите кнопку ОК.

Проверка того, сопоставлена ли структура плана с запросом

  1. Запустите трассировку Приложение SQL Server Profiler, при этом должны быть выбраны типы событий Plan Guide Successful и Plan Guide Unsuccessful (они находятся в узле Производительность).

  2. Запустите запрос из шага 5 предыдущей процедуры.

  3. Приостановите трассировку в приложении Приложение SQL Server Profiler.

  4. Найдите событие Plan Guide Successful для соответствующего запроса.

  5. Если сопоставить структуру плана с запросом не удается, убедитесь, что запрос указан в том же формате (посимвольно), в котором он был введен в инструкции структуры плана. Сюда относятся символы табуляции, пробелы, символы возврата каретки и перевода строки.