Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Można zastosować stały plan zapytania do przewodnika planu typu OBJECT lub SQL. Przewodniki planowania, które stosują stały plan zapytania, są przydatne, gdy wiesz o istniejącym planie wykonywania, który działa lepiej niż ten wybrany przez optymalizator dla określonego zapytania.
W poniższym przykładzie omówiono sposób tworzenia dokumentacji planu dla prostej instrukcji ad hoc SQL. Żądany plan zapytania dla tej instrukcji jest dostarczony w przewodniku po planie przez określenie XML Showplan dla zapytania bezpośrednio w parametrze @hints. W przykładzie najpierw wykonywane jest polecenie SQL w celu wygenerowania planu w pamięci podręcznej dla planów. Na potrzeby tego przykładu zakłada się, że wygenerowany plan jest żądanym planem i nie jest wymagane żadne dodatkowe dostrajanie zapytań. Program Showplan XML dla zapytania jest uzyskiwany przez wykonywanie zapytań względem widoków dynamicznego zarządzania sys.dm_exec_query_stats, sys.dm_exec_sql_text oraz sys.dm_exec_text_query_plan i jest przypisywany do zmiennej @xml_showplan. Zmienna @xml_showplan jest następnie przekazywana do instrukcji sp_create_plan_guide w parametrze @hints . Możesz też utworzyć przewodnik planu na podstawie planu zapytania w pamięci podręcznej planu przy użyciu procedury składowanej sp_create_plan_guide_from_handle .
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