Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете применить фиксированный план запроса к руководству по плану типа OBJECT или SQL. Руководства по плану, которые применяют фиксированный план запроса, полезны, если известно о существующем плане выполнения, который лучше, чем тот, который выбран оптимизатором для определенного запроса.
В следующем примере создается руководство по плану для простой нерегламентированной инструкции SQL. Требуемый план запроса для этой инструкции предоставляется в руководстве по плану, указав XML Showplan для запроса непосредственно в параметре @hints . В примере сначала выполняется инструкция SQL для создания плана в кэше планов. В этом примере предполагается, что созданный план является требуемым планом, и дополнительная настройка запроса не требуется. Xml Showplan для запроса получается путем запроса sys.dm_exec_query_stats, а также sys.dm_exec_text_query_plan динамических административных представлений и назначается переменной @xml_showplansys.dm_exec_sql_text. Затем переменная @xml_showplan передается в инструкции sp_create_plan_guide в параметре @hints. Кроме того, можно создать руководство по плану из плана запроса в кэше планов с помощью хранимой процедуры sp_create_plan_guide_from_handle .
USE AdventureWorks2012;
GO
SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;
GO
DECLARE @xml_showplan nvarchar(max);
SET @xml_showplan = (SELECT query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp
WHERE st.text LIKE N'SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;%');
EXEC sp_create_plan_guide
@name = N'Guide1_from_XML_showplan',
@stmt = N'SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = @xml_showplan;
GO