Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Pevný plán dotazu můžete použít u průvodce plánem typu OBJECT nebo SQL. Příručky plánu, které používají plán s pevným dotazem, jsou užitečné, když víte o existujícím plánu provádění, který funguje lépe než plán vybraný optimalizátorem pro konkrétní dotaz.
Následující příklad vytvoří plánovací průvodce pro jednoduchý ad hoc příkaz SQL. Požadovaný plán dotazu pro tento příkaz je k dispozici v průvodci plánem zadáním plánu Showplan XML pro dotaz přímo v parametru @hints . Příklad nejprve spustí příkaz SQL, který vygeneruje plán v mezipaměti plánu. Pro účely tohoto příkladu se předpokládá, že vygenerovaný plán je požadovaný plán a nevyžaduje se žádné další ladění dotazů. Xml Showplan pro dotaz je získán dotazováním zobrazení sys.dm_exec_query_stats, sys.dm_exec_sql_text a sys.dm_exec_text_query_plan dynamického řízení a je přiřazen k proměnné @xml_showplan. Proměnná @xml_showplan se pak předá sp_create_plan_guide příkazu v parametru @hints . Nebo můžete vytvořit průvodce plánem z plánu dotazu v mezipaměti plánu pomocí sp_create_plan_guide_from_handle uložené procedury.
USE AdventureWorks2022;
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