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 2019 (15.x) és újabb verziói
az Azure SQL Database
Azure SQL Managed Instance
SQL Database-adatbázist a Microsoft Fabricben
Olyan lekérdezésekről érkezik vissza, amelyeknek hiányzó indexet kellett volna tartalmaznia, hiányzó indexek csoportjaiból, kivéve a térbeli indexeket. Hiányzó indexcsoporthoz több lekérdezés is visszatérhet. Egy hiányzó indexcsoport több lekérdezést is tartalmazhat, amelyekhez ugyanazt az indexet igénylik.
Az Azure SQL Database-ben a dinamikus menedzsment nézetek nem fedhetnek fel olyan információkat, amelyek befolyásolnák az adatbázis tárolását, vagy más adatbázisokról, amelyekhez a felhasználó hozzáférhet. Az információk felfedésének elkerülése érdekében a rendszer kiszűr minden olyan sort, amely nem a csatlakoztatott bérlőhöz tartozó adatokat tartalmaz.
| Oszlop név | Adattípus | Description |
|---|---|---|
group_handle |
int | Azonosít egy hiányzó indexcsoportot. Ez az azonosító egyedi a szerveren belül. A többi oszlop minden olyan lekérdezésről információt ad, amelyeknél a csoport indexe hiányzónak számít. Egy indexcsoport csak egy indexet tartalmaz. Csatlakozni index_group_handlelehet sys.dm_db_missing_index_groups-ben. |
query_hash |
binary(8) | A lekérdezésre kiszámított bináris kivonatérték hasonló logikájú lekérdezések azonosítására szolgál. A lekérdezés kivonatával meghatározhatja a csak literális értékektől eltérő lekérdezések összesített erőforrás-használatát. |
query_plan_hash |
binary(8) | A lekérdezés végrehajtási tervében kiszámított bináris kivonatérték, amely hasonló lekérdezés-végrehajtási tervek azonosítására szolgál. A lekérdezésterv kivonatával megkeresheti a hasonló végrehajtási tervekkel rendelkező lekérdezések összesített költségét. Mindig 0x000 amikor egy natívan fordított tárolt eljárás memóriaoptimalizált táblát kérdez. |
last_sql_handle |
varbinary(64) | Egy token, amely egyedien azonosítja az utolsó lefordított utasítás csomagját vagy tárolt eljárását, amelyhez ehhez az indexhez volt szükség. A lekérdezés last_sql_handle SQL szövegének visszanyerésére használható a dinamikus menedzsment függvény sys.dm_exec_sql_text hívásával. |
last_statement_start_offset |
int | Bájtokban, 0-val kezdődő, a lekérdezés kezdőpozícióját mutatja a sorban leírt lekérdezés kezdőpozícióját a batch vagy persisted objektum szövegében az utolsó lefordított utasításhoz, amelyhez az SQL batchben erre az indexre volt szükség. |
last_statement_end_offset |
int | Bájtokban, az - 0vel kezdve, megjelöli a lekérdezés végpozícióját, amelyet a sor leír a batch vagy a persisted objektum szövegében, az utolsó lefordított utasításhoz, amelyhez ehhez az indexhez volt szükség az SQL batch-ben. |
last_statement_sql_handle |
varbinary(64) | Egy token, amely egyedien azonosítja az utolsó lefordított utasítás csomagját vagy tárolt eljárását, amelyhez ehhez az indexhez volt szükség. A Query Store használja. Ellentétben last_sql_handle, sys.query_store_query_text a statement_sql_handle Query Store katalógusnézete által használt hivatkozások sys.query_store_query_text.Visszaküldött 0 , ha a lekérdezés lefordításakor nem volt engedélyezve a lekérdezés lefordításakor. |
user_seeks |
bigint | Azok száma, amelyeket a felhasználói lekérdezések okoztak, és amelyekhez a csoportban javasolt index használható lehetett. |
user_scans |
bigint | A felhasználói lekérdezések által okozott szkennelések száma, amelyekhez a csoportban javasolt index használható lehetett. |
last_user_seek |
datetime | Az utolsó keresés dátuma és időpontja, amelyet a felhasználói lekérdezések okoztak, amelyekhez a csoportban javasolt indexet lehetett volna használni. |
last_user_scan |
datetime | Az utolsó vizsgálat dátuma és időpontja, amelyet a felhasználói lekérdezések okoztak, amelyekhez a csoportban javasolt indexet lehetett volna használni. |
avg_total_user_cost |
float | A felhasználói lekérdezések átlagos költsége, amelyet a csoport indexe csökkenthet. |
avg_user_impact |
float | Az átlagos százalékos előny, amit a felhasználói lekérdezések tapasztalhatnak, ha ezt a hiányzó indexcsoportot megvalósítanák. Az érték azt jelenti, hogy a lekérdezési költség átlagosan ezzel a százalékkal csökkenne, ha ezt a hiányzó indexcsoportot megvalósítanák. |
system_seeks |
bigint | A rendszerlekérdezések, például automatikus statisztikák által okozott keresések száma, amelyekhez a csoportban ajánlott indexet lehetett volna használni. További információért lásd: Auto Stats Event Class. |
system_scans |
bigint | A rendszer lekérdezések által okozott vizsgálatok száma, amelyekhez a csoportban javasolt indexet lehetett volna használni. |
last_system_seek |
datetime | Az utolsó rendszerkeresés dátuma és időpontja, amelyet a csoportban javasolt indexet lehetett volna használni. |
last_system_scan |
datetime | Az utolsó rendszervizsgálat dátuma és időpontja, amelyet a csoportban javasolt indexet lehetett volna használni. |
avg_total_system_cost |
float | A rendszer lekérdezéseinek átlagos költsége, amelyet a csoport indexe csökkenthet. |
avg_system_impact |
float | Az átlagos százalékos haszon, amit a rendszerlekérdezések tapasztalhatnak, ha ezt a hiányzó indexcsoportot megvalósítanák. Az érték azt jelenti, hogy a lekérdezési költség átlagosan ezzel a százalékkal csökkenne, ha ezt a hiányzó indexcsoportot megvalósítanák. |
Megjegyzések
A visszaküldött sys.dm_db_missing_index_group_stats_query információk minden lekérdezés végrehajtása során frissülnek, nem minden lekérdezés fordítása vagy újrafordítása. A használati statisztikák nem maradnak fenn, csak addig maradnak fenn, amíg az adatbázis motort újraindítják.
Az adatbázis-adminisztrátoroknak időnként biztonsági másolatokat kell készíteniük a hiányzó indexinformációkról, ha a szerver újrahasznosítása után is meg akarják tartani a használati statisztikákat. A sqlserver_start_time oszlopával keresse meg az adatbázismotor utolsó indítási idejét. A hiányzó indexeket a Query Store-ban is megőrizheted.
Permissions
Ehhez a dinamikus menedzsment nézethez a felhasználóknak meg kell kapniuk a VIEW SERVER STATE jogosultságot vagy bármilyen engedélyt, amely azt VIEW SERVER STATE sugallja, az SQL Server 2019 (15.x) és korábbi verziók esetében.
VIEW SERVER PERFORMANCE STATE engedélyt igényel a szerveren, SQL Server 2022 (16.x) és újabb verziókhoz.
Példák
Az alábbi példák szemléltetik, hogyan lehet használni a sys.dm_db_missing_index_group_stats_query dinamikus menedzsment nézetet.
A. Találd meg a legfrissebb lekérdezési szöveget a 10 legvárhatóbb felhasználói keresési fejlesztéshez
A következő lekérdezés visszaadja az utolsó rögzített lekérdezési szöveget a 10 hiányzó indexre, amelyek a legvárhatóbb összesített javulást hoznák lefelé sorrendben.
SELECT TOP 10
SUBSTRING
(
sql_text.text,
misq.last_statement_start_offset / 2 + 1,
(
CASE misq.last_statement_start_offset
WHEN -1 THEN DATALENGTH(sql_text.text)
ELSE misq.last_statement_end_offset
END - misq.last_statement_start_offset
) / 2 + 1
),
misq.*
FROM sys.dm_db_missing_index_group_stats_query AS misq
CROSS APPLY sys.dm_exec_sql_text(misq.last_sql_handle) AS sql_text
ORDER BY misq.avg_total_user_cost
* misq.avg_user_impact
* (misq.user_seeks + misq.user_scans) DESC;
Kapcsolódó tartalom
- Nem klaszterezett indexek optimalizálása hiányzó indexjavaslatokkal
- sys.dm_db_missing_index_columns (Transact-SQL)
- sys.dm_db_missing_index_details (Transact-SQL)
- sys.dm_db_missing_index_groups (Transact-SQL)
- sys.dm_db_missing_index_group_stats (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- INDEX KÉSZÍTÉSE (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- A teljesítmény figyelése a Lekérdezéstár segítségével