Как вы уже знаете из предыдущего раздела, подсказки явно задаются в операторе select для оказания влияния на работу оптимизатора запросов. Иногда вы не можете или у вас просто нет желания изменять текст в операторе select напрямую. В этом случае все равно можно повлиять на выполнение запросов, используя структуры планов. Другими словами, структуры планов дают вам возможность использовать отдельную подсказку оптимизации каждый раз, когда выполняются ее условия, без изменения синтаксиса оператора.
Структуры планов создаются при помощи системной процедуры sp_create_ pianguide. Эта процедура создает структуру плана для ассоциированных подсказок запроса или для фактических планов запросов для запросов к базе данных. Другая системная процедура, sp_controi_plan_guide, включает, отключает или удаляет существующую структуру плана.
Database Engine поддерживает следующие типы структур планов:
♦ SQL. Соответствует запросам, которые выполняются в контексте одиночных операторов Transact-SQL или пакетам, которые не являются частью объекта базы данных;
♦ OBJECT. Соответствует запросам, которые выполняются в контексте подпрограмм и триггеров DML;
♦ TEMPLATE. Соответствует одиночным запросам, параметризованным к указанной форме.
Для редактирования информации, связанной со структурой планов, используйте представление просмотра каталогов sys.plan_guides. Это представление содержит одну строку для каждой структуры плана в текущей базе данных. Наиболее важными столбцами являются plan_guide_id, name и querytext. Столбец planguideid задает уникальный идентификатор структуры плана, a name определяет ее имя. Столбец querytext задает текст запроса, для которого создана структура плана.