Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2019 (15.x) a novější verze
Databáze Azure SQL Database
Azure SQL Managed Instance
SQL v Microsoft Fabric
Vrací informace o dotazech, které potřebovaly chybějící index, ze skupin chybějících indexů, s výjimkou prostorových indexů. Na chybějící indexovou skupinu může být vráceno více než jeden dotaz. Jedna chybějící skupina indexů může mít několik dotazů, které potřebují stejný index.
V Azure SQL Database dynamické zobrazení správy nemohou zveřejňovat informace, které by ovlivňovaly obsah databáze, ani informace o jiných databázích, ke kterým má uživatel přístup. Aby se zabránilo zveřejnění těchto informací, vyfiltruje se každý řádek obsahující data, která nepatří do připojeného tenanta.
| Název sloupce | Datový typ | Description |
|---|---|---|
group_handle |
int | Identifikuje skupinu chybějících indexů. Tento identifikátor je jedinečný napříč serverem. Ostatní sloupce poskytují informace o všech dotazech, u kterých je index ve skupině považován za chybějící. Indexová skupina obsahuje pouze jeden index. Lze ji připojit index_group_handlesys.dm_db_missing_index_groups. |
query_hash |
binary(8) | Binární hodnota hash vypočítaná v dotazu a použitá k identifikaci dotazů s podobnou logikou. Pomocí hodnoty hash dotazu můžete určit agregované využití prostředků pro dotazy, které se liší pouze podle hodnot literálů. |
query_plan_hash |
binary(8) | Binární hodnota hash vypočítaná v plánu provádění dotazu a použitá k identifikaci podobných plánů provádění dotazů. K vyhledání kumulativních nákladů na dotazy s podobnými plány spuštění můžete použít hodnotu hash plánu dotazu. Vždy, 0x000 když nativně kompilovaná uložená procedura dotazuje tabulku optimalizovanou pro paměť. |
last_sql_handle |
varbinary(64) | Token, který jednoznačně identifikuje dávkovou nebo uloženou proceduru posledního zkompilovaného příkazu, který tento index potřeboval. Lze last_sql_handle použít k získání SQL textu dotazu vyvolání funkce dynamické správy sys.dm_exec_sql_text. |
last_statement_start_offset |
int | Označuje, v bajtech, začínající na 0, počáteční pozici dotazu, který řádek popisuje v textu svého dávkového nebo persistovaného objektu pro poslední zkompilovaný příkaz, který tento index potřeboval ve svém SQL dávkování. |
last_statement_end_offset |
int | Označuje, v bajtech, počínaje písmenem 0, koncovou pozici dotazu, který řádek popisuje v textu svého dávkového nebo perperentního objektu, pro poslední zkompilovaný příkaz, který tento index potřeboval ve své SQL dávce. |
last_statement_sql_handle |
varbinary(64) | Token, který jednoznačně identifikuje dávkovou nebo uloženou proceduru posledního zkompilovaného příkazu, který tento index potřeboval. Používá Query Store. Na rozdíl od , sys.query_store_query_text odkazuje last_sql_handlena zobrazení statement_sql_handle katalogu Query Store sys.query_store_query_text.Vrátí, 0 pokud Query Store nebyl při kompilaci dotazu povolen. |
user_seeks |
bigint | Počet vyhledávání způsobených uživatelskými dotazy, pro které mohl být doporučený index ve skupině použit. |
user_scans |
bigint | Počet skenů způsobených uživatelskými dotazy, pro které mohl být použit doporučený index ve skupině. |
last_user_seek |
datetime | Datum a čas posledního vyhledávání způsobený uživatelskými dotazy, pro které mohl být použit doporučený index ve skupině. |
last_user_scan |
datetime | Datum a čas posledního skenování způsobené uživatelskými dotazy, pro které mohl být použit doporučený index ve skupině. |
avg_total_user_cost |
float | Průměrné náklady na uživatelské dotazy, které lze snížit o index ve skupině. |
avg_user_impact |
float | Průměrný procentuální přínos, který by uživatelské dotazy mohly zažít, pokud by byla tato chybějící indexová skupina zavedena. Hodnota znamená, že náklady na dotaz by v průměru klesly o toto procento, pokud by byla tato chybějící indexová skupina implementována. |
system_seeks |
bigint | Počet vyhledávání způsobených systémovými dotazy, jako jsou dotazy automatických statistik, pro které mohl být doporučený index ve skupině použit. Pro více informací viz Auto Stats Event Class. |
system_scans |
bigint | Počet skenů způsobených systémovými dotazy, pro které mohl být doporučený index ve skupině použit. |
last_system_seek |
datetime | Datum a čas posledního vyhledávání systému způsobené systémovými dotazy, pro které mohl být použit doporučený index ve skupině. |
last_system_scan |
datetime | Datum a čas posledního systémového skenování způsobeného systémovými dotazy, pro které mohl být použit doporučený index ve skupině. |
avg_total_system_cost |
float | Průměrné náklady systémových dotazů, které lze snížit o index ve skupině. |
avg_system_impact |
float | Průměrný procentuální přínos, který by systémové dotazy mohly zažít, pokud by byla tato chybějící indexová skupina implementována. Hodnota znamená, že náklady na dotaz by v průměru klesly o toto procento, pokud by byla tato chybějící indexová skupina implementována. |
Poznámky
Informace vrácené by sys.dm_db_missing_index_group_stats_query jsou aktualizovány každým provedením dotazu, nikoli každým dotazem nebo rekompilací. Statistiky používání se neuchovat a uchovávají se pouze do restartu databázového enginu.
Správci databází by měli pravidelně vytvářet zálohy chybějících indexových informací, pokud chtějí zachovat statistiky využití po recyklaci serveru. Pomocí sloupce sqlserver_start_time v sys.dm_os_sys_info vyhledejte čas posledního spuštění databázového stroje.
Chybějící indexy můžete také zachovat pomocí Query Store.
Povolení
Pro dotazování tohoto dynamického pohledu správy musí být uživatelům uděleno oprávnění VIEW SERVER STATE nebo jakékoli oprávnění, které toto oprávnění VIEW SERVER STATE implikuje, a to pro SQL Server 2019 (15.x) a předchozí verze.
Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru pro SQL Server 2022 (16.x) a pozdější verze.
Examples
Následující příklady ilustrují, jak používat sys.dm_db_missing_index_group_stats_query dynamický pohled na správu.
A. Najděte nejnovější text dotazu pro 10 nejvíce očekávaných zlepšení uživatelských dotazů
Následující dotaz vrací poslední zaznamenaný text dotazu pro 10 chybějících indexů, které by přinesly nejvyšší očekávané kumulativní zlepšení, v sestupném pořadí.
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;
Související obsah
- Ladění neclusterovaných indexů s využitím návrhů týkajících se chybějících indexů
- 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) - VYTVOŘTE INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Monitorování výkonu s využitím úložiště dotazů