sp_query_store_force_plan (Transact-sql SQL)

適用対象: はいSQL Server 2016 (13.x) 以降 はいAzure SQL データベース はいAzure SQL Managed Instance

特定のクエリに対して特定のプランを強制することができます。

特定のクエリに対してプランが強制されると、クエリが発生するたびに、クエリ SQL Server オプティマイザーでプランが強制的に実行されます。 プランの強制に失敗した場合は、拡張イベントが発生し、通常の方法で最適化するようにクエリオプティマイザーに指示されます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_query_store_force_plan [ @query_id = ] query_id , [ @plan_id = ] plan_id [;]  

引数

[ @query_id = ] query_id

クエリの id を示します。 query_idbigint,、既定値はありません。

[ @plan_id = ] plan_id

強制されるクエリプランの id を指定します。 plan_idbigint,、既定値はありません。

リターン コードの値

0 (成功) または 1 (失敗)

解説

この機能によって適用される実行プランは、強制されたプランと同じかそれと同じになります。 結果として得られるプランは、によって指定されたプランと同一でない場合があるため、 sp_query_store_force_plan プランのパフォーマンスが異なる場合があります。 まれに、パフォーマンスの差が有意で負の値になる場合があります。この場合、管理者は強制されたプランを削除する必要があります。

アクセス許可

データベースに対する ALTER 権限が必要です。

次の例では、クエリストア内のクエリに関する情報を返します。

SELECT Txt.query_text_id, Txt.query_sql_text, Pl.plan_id, Qry.*  
FROM sys.query_store_plan AS Pl  
JOIN sys.query_store_query AS Qry  
    ON Pl.query_id = Qry.query_id  
JOIN sys.query_store_query_text AS Txt  
    ON Qry.query_text_id = Txt.query_text_id ;  

強制する query_id と plan_id を特定した後、次の例を使用して、クエリでプランを使用するように強制します。

EXEC sp_query_store_force_plan 3, 3;  

参照

sp_query_store_remove_plan (transct SQL)
sp_query_store_remove_query (transact-sql SQL)
sp_query_store_unforce_plan (transact-sql SQL)
クエリストアカタログビュー (transact-sql SQL)
クエリストアを使用したパフォーマンスの監視
sp_query_store_reset_exec_stats (transact-sql SQL)
sp_query_store_flush_db (transact-sql SQL)
クエリ ストアを使用する際の推奨事項