Создание нового руководства по плану

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

В этом разделе

Перед началом работы

Ограничения и условия

  • Аргументы процедуры sp_create_plan_guide должны задаваться в указанном порядке. При указании значений для параметров sp_create_plan_guide все имена параметров должны быть указаны явным образом, или не указываться вовсе. Например, если @name = задано, то @stmt =@type =также необходимо указать и т. д. Аналогичным образом, если @name = опущено и указано только значение параметра, остальные имена параметров также должны быть опущены, а только их значения предоставлены. Имена аргументов приводятся исключительно в целях описания, чтобы помочь разобраться с синтаксисом. SQL Server не проверяет, совпадает ли указанное имя параметра с именем параметра в позиции, в которой используется имя.

  • Можно создать более одной инструкции по плану для объекта или SQL для одного и того же запроса и пакета или модуля. Однако только одно руководство по плану может быть включено одновременно.

  • План-гиды типа OBJECT не могут быть созданы для значения @module_or_batch, которое ссылается на хранимую процедуру, функцию или триггер DML, использует предложение WITH ENCRYPTION или является временным объектом.

  • Попытка удаления или изменения функции, хранимой процедуры или триггера DML, на которые имеется ссылка в структуре плана (как включенных, так и отключенных), приводит к ошибке. Попытка удалить таблицу, для которой определен триггер, имеющий соответствующую ссылку в структуре плана, также вызывает ошибку.

Безопасность

Разрешения

Чтобы создать руководство по плану типа OBJECT, требуется разрешение ALTER для объекта, на который ссылается ссылка. Чтобы создать руководство по плану типа SQL или TEMPLATE, требуется разрешение ALTER для текущей базы данных.

Использование среды SQL Server Management Studio

Создать руководство по планированию

  1. Щелкните значок «+», чтобы развернуть базу данных, в которой требуется создать структуру плана, затем щелкните значок «+», чтобы развернуть папку Программирование .

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

  3. В диалоговом окне Создание структуры плана, в поле Имя, введите имя структуры плана.

  4. В поле инструкции введите инструкцию Transact-SQL, к которой применяется руководство по плану.

  5. В списке типов области выберите тип сущности, в которой отображается инструкция Transact-SQL. Это указывает контекст сопоставления инструкции Transact-SQL с руководством по плану. Возможными значениями являются OBJECT, SQLи TEMPLATE.

  6. В поле "Область" введите текст пакета, в котором отображается инструкция Transact-SQL. Пакетный текст не может содержать инструкцию "USE" database. Поле Пакет области доступно только если выбран SQL в качестве типа области. Когда типом области является SQL, и поле пакета области пустое, значение текста пакета устанавливается так же, как значение в поле Инструкция.

  7. В списке Имя схемы области введите имя схемы, в которой содержится объект. Поле Имя схемы области доступно, только если в качестве типа области выбран Объект.

  8. В поле имени объекта Scope введите имя хранимой процедуры Transact-SQL, определяемую пользователем скалярную функцию, функцию с табличным значением или триггер DML, в котором отображается инструкция Transact-SQL. Поле Имя объекта области доступно, только если выбран тип области Объект .

  9. В поле "Параметры" введите имя параметра и тип данных всех параметров, внедренных в инструкцию Transact-SQL.

    Параметры применяются только при выполнении одного из следующих условий.

    • Тип области равен SQL или TEMPLATE. Если тип области равен TEMPLATE, то параметры не могут иметь значение NULL.

    • Инструкция Transact-SQL отправляется с помощью sp_executesql, а значение параметра указывается, или SQL Server внутренне отправляет инструкцию после его параметризации.

  10. В поле "Подсказки" введите указания запроса или план запроса, которые будут применены к инструкции Transact-SQL. Чтобы задать одно или несколько указаний для запроса, введите предложение OPTION.

  11. Нажмите кнопку ОК.

Использование Transact-SQL

Чтобы создать руководство по составлению плана

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    -- creates a plan guide named Guide1 based on a SQL statement  
    EXEC sp_create_plan_guide   
        @name = N'Guide1',   
        @stmt = N'SELECT TOP 1 *   
                  FROM Sales.SalesOrderHeader   
                  ORDER BY OrderDate DESC',   
        @type = N'SQL',  
        @module_or_batch = NULL,   
        @params = NULL,   
        @hints = N'OPTION (MAXDOP 1)';  
    
    

Дополнительные сведения см. в разделе sp_create_plan_guide (Transact-SQL).