Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
Tworzy lub aktualizuje wskazówki dotyczące magazynu zapytań dla danego query_id.
Transact-SQL konwencje składni
Syntax
sp_query_store_set_hints
[ @query_id = ] query_id ,
[ @query_hints = ] 'query_hints'
[ , [ @replica_group_id = ] 'replica_group_id' ]
[ ; ]
Arguments
Important
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
[ @query_id = ] query_id
Kolumna magazynu zapytań query_id
z sys.query_store_query.
@query_id jest bigint.
[ @query_hints = ] N'query_hints'
Ciąg znaków opcji zapytania rozpoczynający się od OPTION
.
@query_hints to nvarchar(max).
Jeśli USE HINT
element jest uwzględniony w argumencie @query_hints
, pojedyncze cudzysłowy wokół poszczególnych nazw wskazówek muszą być powtarzane. Na przykład @query_hints = N'OPTION (MAXDOP = 1, USE HINTS (''ENABLE_QUERY_OPTIMIZER_HOTFIXES'',''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_150''))'
.
Aby uzyskać więcej informacji, zobacz Obsługiwane wskazówki dotyczące zapytań.
[ @replica_group_id = ] 'replica_group_id'
Ten opcjonalny parametr określa zakres, w którym wskazówka jest stosowana w repliki pomocniczej, gdy magazyn zapytań dla czytelnych sekund jest włączony. @replica_group_id jest bigint.
Argument @replica_group_id jest domyślnie ustawiony na replikę lokalną (podstawową lub pomocniczą), ale opcjonalnie można określić wartość zgodną z wartością w kolumnie w replica_group_id
sys.query_store_replicas , aby ustawić wskazówkę dla innej grupy replik.
Return value
0
(powodzenie) lub 1
(niepowodzenie).
Remarks
Wskazówki są określone w prawidłowym formacie ciągu języka T-SQL N'OPTION (..)'
.
- Jeśli dla określonego @query_idnie istnieją żadne wskazówki dotyczące magazynu zapytań, zostanie utworzona nowa wskazówka magazynu zapytań.
- Jeśli wskazówka magazynu zapytań już istnieje dla określonego @query_id, wartość określona dla @query_hints zastępuje wcześniej określone wskazówki dla skojarzonego zapytania.
- Jeśli query_id nie istnieje, zostanie zgłoszony błąd.
W przypadku, gdy jedna z wskazówek uniemożliwiłaby utworzenie planu zapytania, wszystkie wskazówki są ignorowane. Aby uzyskać więcej informacji o błędach, zobacz sys.query_store_query_hints.
Aby usunąć wskazówki skojarzone z query_id, użyj systemowej procedury składowanej sys.sp_query_store_clear_hints.
Obsługiwane wskazówki dotyczące zapytań
Te wskazówki dotyczące zapytań są obsługiwane jako wskazówki dotyczące magazynu zapytań:
{ 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 ] )
Następujące wskazówki dotyczące zapytań są obecnie nieobsługiwane:
OPTIMIZE FOR ( @var = val)
MAXRECURSION
-
USE PLAN
(zamiast tego należy rozważyć, że oryginalny plan magazynu zapytań wymusza możliwości, sp_query_store_force_plan). DISABLE_DEFERRED_COMPILATION_TV
DISABLE_TSQL_SCALAR_UDF_INLINING
-
Wskazówki dotyczące tabel (na przykład
FORCESEEK
, ,READUNCOMMITTED
INDEX
)
Permissions
Wymaga uprawnienia ALTER
w bazie danych.
Examples
Identyfikowanie zapytania w magazynie zapytań
Poniższe przykładowe zapytania sys.query_store_query_text i sys.query_store_query, aby zwrócić query_id dla wykonanego fragmentu tekstu zapytania.
W tym przykładzie zapytanie, które próbujemy dostroić, znajduje się w przykładowej bazie danych SalesLT
:
SELECT *
FROM SalesLT.Address AS A
INNER JOIN SalesLT.CustomerAddress AS CA
ON A.AddressID = CA.AddressID
WHERE PostalCode = '98052'
ORDER BY A.ModifiedDate DESC;
Magazyn zapytań nie odzwierciedla natychmiast danych zapytania w widokach systemowych.
Zidentyfikuj zapytanie w widokach wykazu systemu magazynu zapytań:
SELECT q.query_id,
qt.query_sql_text
FROM sys.query_store_query_text AS qt
INNER JOIN sys.query_store_query AS q
ON qt.query_text_id = q.query_text_id
WHERE query_sql_text LIKE N'%PostalCode =%'
AND query_sql_text NOT LIKE N'%query_store%';
GO
W poniższych przykładach poprzedni przykład zapytania w bazie danych SalesLT
został zidentyfikowany jako query_id 39.
Stosowanie pojedynczej wskazówki
Poniższy przykład stosuje RECOMPILE
wskazówkę do query_id 39, jak określono w magazynie zapytań:
EXECUTE sys.sp_query_store_set_hints
@query_id = 39,
@query_hints = N'OPTION(RECOMPILE)';
Poniższy przykład stosuje wskazówkę, aby wymusić starszego narzędzia do szacowania kardynalności do query_id 39 zidentyfikowanych w magazynie zapytań:
EXECUTE sys.sp_query_store_set_hints
@query_id = 39,
@query_hints = N'OPTION(USE HINT(''FORCE_LEGACY_CARDINALITY_ESTIMATION''))';
Stosowanie wielu wskazówek
Poniższy przykład stosuje wiele wskazówek dotyczących zapytań do query_id 39, w tym RECOMPILE
, MAXDOP 1
i zachowanie optymalizatora zapytań na poziomie zgodności 110:
EXECUTE sys.sp_query_store_set_hints
@query_id = 39,
@query_hints = N'OPTION(RECOMPILE, MAXDOP 1, USE HINT(''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_110''))';
Wyświetlanie wskazówek dotyczących magazynu zapytań
Poniższy przykład zwraca istniejące wskazówki dotyczące magazynu zapytań:
SELECT query_hint_id,
query_id,
replica_group_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;
Usuwanie wskazówki z zapytania
Użyj poniższego przykładu, aby usunąć wskazówkę z query_id 39 przy użyciu procedury składowanej systemu sp_query_store_clear_hints.
EXECUTE sys.sp_query_store_clear_hints @query_id = 39;
Related content
- wskazówki dotyczące magazynu zapytań
- wskazówki dotyczące tabel (Transact-SQL)
- sp_query_store_clear_hints (Transact-SQL)
- sys.query_store_query_hints (Transact-SQL)
- Monitorowanie wydajności przy użyciu magazynu zapytań