Присоединение указаний запросов к структуре плана
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Любые сочетания действительных указаний запроса могут быть использованы в руководстве плана. Когда структура плана совпадает с запросом, предложение OPTION, указанное в предложении указания структуры плана, добавляется к запросу, прежде чем запрос подвергается компиляции и оптимизации. Если в запросе, совпавшем со структурой плана, уже присутствует предложение OPTION, указания запроса, заданные в структуре плана, заменяют рекомендации в запросе. Чтобы структура плана совпала с запросом, уже содержащим предложение OPTION, предложение OPTION запроса необходимо включить при указании текста запроса для сопоставления в инструкции sp_create_plan_guide. Если необходимо, чтобы подсказки, указанные в руководстве плана, были добавлены к подсказкам, которые уже существуют в запросе, вместо того, чтобы заменить их, следует указать и исходные, и дополнительные подсказки в предложении OPTION структуры плана.
Внимание
Структуры планов с неправильным использованием указаний запросов могут привести к проблемам при компиляции во время выполнения и ухудшению производительности. Структуры планов должны применяться только опытными разработчиками и администраторами баз данных.
Общие указания запросов, используемые в структурах планов
Запросы, получающие преимущества от структур планов, обычно используют параметры и могут выполняться неэффективно, так как при их выполнении кэшируются планы запросов со значениями параметров, не соответствующими сценарию худшего случая или типичному сценарию. Для решения этой проблемы можно использовать указания запросов OPTIMIZE FOR и RECOMPILE. OPTIMIZE FOR указывает SQL Server использовать определенное значение для параметра при оптимизации запроса. Указание RECOMPILE сообщает серверу, что после выполнения план запроса нужно удалить и что оптимизатору запросов нужно будет перекомпилировать план при следующем выполнении запроса. См. пример в статье Руководства планов.
Кроме того, можно задать указания таблицы INDEX, FORCESCAN и FORCESEEK как указания запроса. При использовании в качестве указаний запроса они ведут себя так же, как и встроенные табличные указания или указания представлений. Указание INDEX вынуждает оптимизатор запросов использовать только заданные индексы при получении доступа к данным ссылочной таблицы или ссылочного представления. Указание FORCESEEK вынуждает оптимизатор запросов использовать только операцию поиска по индексу для доступа к данным ссылочной таблицы или ссылочного представления в запросе. Эти указания предоставляют дополнительные функциональные возможности структуре плана и позволяют оказывать большее влияние на процесс оптимизации запросов, использующих структуру плана.