Megosztás a következőn keresztül:


sys.dm_db_missing_index_group_stats_query (Transact-SQL)

A következőkre vonatkozik: Az SQL Server 2019 (15.x) és újabb verziói az Azure SQL DatabaseAzure SQL Managed InstanceSQL 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;