sp_query_store_set_hints (Transact-SQL)

Anwendungsbereich: JaAzure SQL-Datenbank JaVerwaltete Azure SQL-Instanz

Erstellt oder aktualisiert Abfragehinweise Store für einen bestimmten query_id.

Symbol für Themenlink Transact-SQL-Syntaxkonventionen

Syntax

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

Rückgabewerte

„0“ (erfolgreich) oder „1“ (fehlerhaft)

Bemerkungen

Hinweise werden in einem gültigen T-SQL Zeichenfolgenformat N'OPTION (..)' angegeben.

  • Ist für einen bestimmten Wert für „query_id“ kein Abfragespeicherhinweis vorhanden, wird ein neuer erstellt.
  • Ist für einen bestimmten Wert für „query_id“ bereits ein Abfragespeicherhinweis vorhanden, überschreibt der letzte angegebene Wert frühere Werte für die entsprechende Abfrage.
  • Ist der Wert für „query_id“ nicht vorhanden, wird ein Fehler ausgelöst.

Sollte ein Hinweis zu einem Fehler in der Abfrageausführung führen, wird er ignoriert. Die aktuellen Fehlerdetails werden dann in sys.query_store_query_hints angezeigt.

Um einem query_id zugeordnete Hinweise zu entfernen, verwenden Sie die gespeicherte Systemprozedur sys.sp_query_store_clear_hints.

Unterstützte Abfragehinweise (Vorschau)

Diese Abfragehinweise werden als Abfragehinweise Store unterstützt:

{ 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 ] )

Die folgenden Abfragehinweise werden derzeit nicht unterstützt:

Berechtigungen

Erfordert die ALTER-Berechtigung für die Datenbank.

Beispiele

Identifizieren eines query_id in Query Store

Im folgenden Beispiel werden die Abfragen sys.query_store_query_text und sys.query_store_query ausgeführt, um „query_id“ für ein ausgeführtes Abfragetextfragment zu erhalten:

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

Anwenden eines einzelnen Hinweises

Im folgenden Beispiel wird der RECOMPILE-Hinweis auf query_id 39 angewendet, der in Abfrage-Store identifiziert wird:

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

Im folgenden Beispiel wird der Hinweis angewendet, um die Legacykardinalitätsschätzung für query_id 39 zu erzwingen, identifiziert im Abfragespeicher:

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

Anwenden mehrerer Hinweise

Im folgenden Beispiel werden mehrere Abfragehinweise auf query_id 39 angewendet, einschließlich RECOMPILE, MAXDOP 1 und des SQL 2012-Abfrageoptimiererverhaltens:

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

Anzeigen von Store Hinweisen für Abfragen

Im folgenden Beispiel werden vorhandene Abfragehinweise Store zurückgegeben:

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;

Weitere Informationen