Поделиться через


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

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Структура плана влияет на оптимизацию запросов путем присоединения указаний запросов или фиксированного плана запросов к ним. В руководстве по плану вы указываете запрос, который нужно оптимизировать, и предложение 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 на текущую базу данных.

Создайте руководство по планам с использованием SSMS

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

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

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

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

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

  6. В поле "Область" введите текст пакета, в котором отображается инструкция Transact-SQL. Текст пакета не может содержать инструкцию USEdatabase. Поле Пакет области доступно только если выбран 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. Щелкните OK.

руководство по плану

Создание руководства по плану с помощью T-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).