Menerapkan Rencana Kueri Tetap ke Panduan Paket
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Anda bisa menerapkan rencana kueri tetap ke panduan paket jenis OBJECT atau SQL. Panduan paket yang menerapkan rencana kueri tetap berguna saat Anda mengetahui tentang rencana eksekusi yang sudah ada yang berkinerja lebih baik daripada yang dipilih oleh pengoptimal untuk kueri tertentu.
Contoh berikut membuat panduan rencana untuk pernyataan SQL ad hoc sederhana. Rencana kueri yang diinginkan untuk pernyataan ini disediakan dalam panduan paket dengan menentukan Xml Showplan untuk kueri langsung dalam @hints
parameter . Contoh pertama kali menjalankan pernyataan SQL untuk menghasilkan rencana dalam cache rencana. Untuk tujuan contoh ini, diasumsikan bahwa rencana yang dihasilkan adalah rencana yang diinginkan dan tidak diperlukan penyetelan kueri tambahan. Xml Showplan untuk kueri diperoleh dengan mengkueri sys.dm_exec_query_stats
tampilan manajemen dinamis , sys.dm_exec_sql_text
, dan sys.dm_exec_text_query_plan
dan ditetapkan ke @xml_showplan
variabel . Variabel @xml_showplan
kemudian diteruskan ke sp_create_plan_guide
pernyataan dalam @hints
parameter . Atau, Anda bisa membuat panduan paket dari rencana kueri di cache paket dengan menggunakan prosedur tersimpan 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