sp_query_store_set_hints (Transact-sql SQL)

適用対象: はいAzure SQL データベース はいAzure SQL Managed Instance

指定された query_id の クエリストアヒント を作成または更新します。

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

構文

sp_query_store_set_hints
    @query_id bigint,
    @query_hints nvarchar(max) [;]  

戻り値

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

解説

ヒントは、有効な T SQL 文字列形式の N'OPTION (..) ' で指定されます。

  • 特定の query_id に対してクエリ ストア ヒントが存在しない場合は、新しいクエリ ストア ヒントが作成されます。
  • 特定の query_id に対してクエリ ストア ヒントが既に存在する場合、指定された最後の値は、関連付けられているクエリに対して以前に指定された値をオーバーライドします。
  • query_id が存在しない場合は、エラーが発生します。

ヒントが原因でクエリが失敗する場合、ヒントは無視され、最新のエラーの詳細は sys.query_store_query_hints で表示できます。

Query_id に関連付けられているヒントを削除するには、システムストアドプロシージャ sys.sp_query_store_clear_hintsを使用します。

サポートされているクエリヒント (プレビュー)

これらの クエリヒント はクエリストアヒントとしてサポートされています。

{ HASH | ORDER } GROUP   
  | { CONCAT | HASH | MERGE } UNION   
  | { LOOP | MERGE | HASH } JOIN   
  | EXPAND VIEWS   
  | FAST number_rows   
  | FORCE ORDER   
  | IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX  
  | KEEP PLAN   
  | KEEPFIXED PLAN  
  | MAX_GRANT_PERCENT = percent  
  | MIN_GRANT_PERCENT = percent  
  | MAXDOP number_of_processors   
  | NO_PERFORMANCE_SPOOL   
  | OPTIMIZE FOR UNKNOWN  
  | PARAMETERIZATION { SIMPLE | FORCED }   
  | RECOMPILE  
  | ROBUST PLAN   
  | USE HINT   ( '<hint_name>' [ , ...n ] )

現在、次のクエリヒントはサポートされていません。

アクセス許可

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

クエリストア内の query_id を識別する

次の例では、sys.query_store_query_textsys.query_store_query のクエリを実行し、実行されたクエリ テキスト フラグメントの query_id を返します。

SELECT q.query_id, qt.query_sql_text
FROM sys.query_store_query_text qt 
INNER JOIN sys.query_store_query q ON 
    qt.query_text_id = q.query_text_id 
WHERE query_sql_text like N'%ORDER BY ListingPrice DESC%'  
  AND query_sql_text not like N'%query_store%';
GO

1つのヒントを適用

次の例では、クエリストアで識別される query_id 39 に RECOMPILE ヒントを適用します。

EXEC sys.sp_query_store_set_hints @query_id= 39, @query_hints = N'OPTION(RECOMPILE)';

次の例では、クエリ ストアで特定された query_id 39 にレガシ カーディナリティ推定機能を強制するヒントが適用されています。

EXEC sys.sp_query_store_set_hints @query_id= 39, @query_hints = N'OPTION(USE HINT(''FORCE_LEGACY_CARDINALITY_ESTIMATION''))';

複数のヒントを適用する

次の例では、RECOMPILE、MAXDOP 1、SQL 2012 クエリ オプティマイザー ビヘイビアーなど、複数のクエリ ヒントが query_id 39 に適用されています。

EXEC sys.sp_query_store_set_hints @query_id= 39, @query_hints = N'OPTION(RECOMPILE, MAXDOP 1, USE HINT(''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_110''))';

クエリストアヒントを表示する

次の例では、既存のクエリストアヒントが返されます。

SELECT query_hint_id, query_id, query_hint_text, last_query_hint_failure_reason, last_query_hint_failure_reason_desc, query_hint_failure_count, source, source_desc 
FROM sys.query_store_query_hints 
WHERE query_id = 39;

参照