Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Az SQL Server 2022 (16.x) és újabb verziói
az Azure SQL Database
Azure SQL Managed Instance
SQL-adatbázist a Microsoft Fabricben
Egy adott query_id lekérdezéstár-tippeket hoz létre vagy frissít.
Transact-SQL szintaxis konvenciói
Syntax
sp_query_store_set_hints
[ @query_id = ] query_id ,
[ @query_hints = ] 'query_hints'
[ , [ @replica_group_id = ] 'replica_group_id' ]
[ ; ]
Arguments
Important
A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.
[ @query_id = ] query_id
A Lekérdezéstár query_id oszlop sys.query_store_query.
@query_id.
[ @query_hints = ] N'query_hints'
A lekérdezési lehetőségek karaktersztringje OPTION.
@query_hintsnvarchar(max).
Ha USE HINT szerepel az @query_hints argumentumban, meg kell ismételni az egyes emlékeztetők neve körüli idézőjeleket. Például: @query_hints = N'OPTION (MAXDOP = 1, USE HINTS (''ENABLE_QUERY_OPTIMIZER_HOTFIXES'',''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_150''))'.
További információ: Támogatott lekérdezési tippek.
[ @replica_group_id = ] 'replica_group_id'
Ez az opcionális paraméter határozza meg, hogy a rendszer milyen hatókörre alkalmazza a tippet egy másodlagos replikán, amikor engedélyezve van az olvasható másodpéldányok lekérdezéstára . @replica_group_idnagy. A Query Store másodlagos replikákhoz az SQL Server 2025 (17.x) és későbbi verzióitól kezdve támogatott, valamint az Azure SQL Database-ben. A teljes platformtámogatásért lásd a Query Store-t a másodlagos replikákért.
A @replica_group_id argumentum alapértelmezés szerint a helyi replika (elsődleges vagy másodlagos), de megadhat egy értéket a replica_group_id oszlopában egy másik replikacsoportra vonatkozó tipp beállításához.
Visszaadott érték
0 (sikeres) vagy 1 (hiba).
Remarks
A tippek érvényes T-SQL-sztringformátumban vannak megadva N'OPTION (..)'.
- Ha egy adott @query_idnem tartalmaz lekérdezéstár-tippet, a rendszer új lekérdezéstár-tippet hoz létre.
- Ha egy lekérdezéstár-tipp már létezik egy adott @query_id, a @query_hints megadott érték felülírja a társított lekérdezéshez korábban megadott tippeket.
- Ha egy query_id nem létezik, hibaüzenet jelenik meg.
Abban az esetben, ha az egyik tipp megakadályozná a lekérdezéstervek készítését, a rendszer figyelmen kívül hagyja az összes tippet. A hiba részleteiről további információt a sys.query_store_query_hints.
A query_idtársított tippek eltávolításához használja a rendszer által tárolt eljárást sys.sp_query_store_clear_hints.
Támogatott lekérdezési tippek
Az alábbi lekérdezési tippek támogatják a Lekérdezéstár-tippeket:
{ 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 ] )
A következő lekérdezési tippek jelenleg nem támogatottak:
OPTIMIZE FOR ( @var = val)MAXRECURSION-
USE PLAN(ehelyett fontolja meg a Query Store eredeti tervének kényszerítési képességét, sp_query_store_force_plan). DISABLE_DEFERRED_COMPILATION_TVDISABLE_TSQL_SCALAR_UDF_INLINING-
Táblázatos tippek (például,
FORCESEEK,READUNCOMMITTED)INDEX
Permissions
Az adatbázishoz ALTER engedély szükséges.
Examples
Lekérdezés azonosítása a Lekérdezéstárban
Az alábbi példa lekérdezi sys.query_store_query_text és sys.query_store_query a végrehajtott lekérdezés szövegtöredékének query_id visszaadásához.
Ebben a példában a hangolni kívánt lekérdezés a SalesLT mintaadatbázisban található:
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;
A Lekérdezéstár nem tükrözi azonnal a rendszernézetek lekérdezési adatait.
A lekérdezés azonosítása a Lekérdezéstár rendszerkatalógus-nézeteiben:
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
Az alábbi mintákban a SalesLT adatbázis előző lekérdezési példáját query_id 39-ként azonosítottuk.
Egyetlen tipp alkalmazása
Az alábbi példa a RECOMPILE lekérdezéstárban azonosított query_id 39-query_id alkalmazza a tippet:
EXECUTE sys.sp_query_store_set_hints
@query_id = 39,
@query_hints = N'OPTION(RECOMPILE)';
Az alábbi példa a lekérdezéstárban azonosított query_id 39-örökölt számosságbecslő kényszerítésére alkalmazza a tippet:
EXECUTE sys.sp_query_store_set_hints
@query_id = 39,
@query_hints = N'OPTION(USE HINT(''FORCE_LEGACY_CARDINALITY_ESTIMATION''))';
Több tipp alkalmazása
Az alábbi példa több lekérdezési tippet alkalmaz a 39-es query_id, beleértve RECOMPILEMAXDOP 1a 110-es kompatibilitási szinten a lekérdezésoptimalizáló viselkedését:
EXECUTE sys.sp_query_store_set_hints
@query_id = 39,
@query_hints = N'OPTION(RECOMPILE, MAXDOP 1, USE HINT(''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_110''))';
Lekérdezéstár-tippek megtekintése
Az alábbi példa a meglévő lekérdezéstár-tippeket adja vissza:
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;
A tipp eltávolítása egy lekérdezésből
Az alábbi példában eltávolíthatja a query_id 39-ből a sp_query_store_clear_hints rendszer által tárolt eljárást.
EXECUTE sys.sp_query_store_clear_hints @query_id = 39;