Delen via


sys.dm_db_missing_index_group_stats (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Geeft samenvattende informatie over groepen ontbrekende indexen, exclusief ruimtelijke indexen.

In Azure SQL Database kunnen dynamische beheerweergaven geen informatie weergeven die van invloed is op databaseinsluiting of informatie weergeven over andere databases waartoe de gebruiker toegang heeft. Om te voorkomen dat deze informatie zichtbaar wordt gemaakt, wordt elke rij met gegevens die geen deel uitmaken van de verbonden tenant uitgefilterd.

Kolomnaam Gegevenstype Description
group_handle int Identificeert een groep ontbrekende indexen. Deze identificatie is uniek binnen de server.

De andere kolommen geven informatie over alle zoekopdrachten waarvoor de index in de groep als ontbrekend wordt beschouwd.

Een indexgroep bevat slechts één index.

Kan in sys.dm_db_missing_index_groups worden aangeslotenindex_group_handle.
unique_compiles bigint Aantal compilaties en hercompilaties die baat zouden hebben bij deze ontbrekende indexgroep. Compilaties en hercompilaties van vele verschillende queries kunnen bijdragen aan deze kolomwaarde.
user_seeks bigint Aantal zoekopdrachten veroorzaakt door gebruikerszoekopdrachten waarvoor de aanbevolen index in de groep gebruikt had kunnen worden.
user_scans bigint Aantal scans veroorzaakt door gebruikerszoekopdrachten waarvoor de aanbevolen index in de groep gebruikt had kunnen worden.
last_user_seek datetime Datum en tijd van de laatste zoekopdracht veroorzaakt door gebruikerszoekopdrachten waarvoor de aanbevolen index in de groep gebruikt kon worden.
last_user_scan datetime Datum en tijd van de laatste scan veroorzaakt door gebruikerszoekopdrachten waarvoor de aanbevolen index in de groep gebruikt had kunnen worden.
avg_total_user_cost float Gemiddelde kosten van de gebruikersqueries die door de index in de groep kunnen worden verlaagd.
avg_user_impact float Gemiddeld procentueel voordeel dat gebruikerszoekopdrachten zouden kunnen ervaren als deze ontbrekende indexgroep werd geïmplementeerd. De waarde betekent dat de querykosten gemiddeld met dit percentage zouden dalen als deze ontbrekende indexgroep werd geïmplementeerd.
system_seeks bigint Aantal zoekopdrachten veroorzaakt door systeemzoekopdrachten, zoals autostatistieken, waarvoor de aanbevolen index in de groep gebruikt had kunnen worden. Voor meer informatie, zie Auto Stats Event Class.
system_scans bigint Aantal scans veroorzaakt door systeemzoekopdrachten waarvoor de aanbevolen index in de groep gebruikt had kunnen worden.
last_system_seek datetime Datum en tijd van de laatste systeemzoekopdracht veroorzaakt door systeemzoekopdrachten waarvoor de aanbevolen index in de groep gebruikt had kunnen worden.
last_system_scan datetime Datum en tijd van de laatste systeemscan veroorzaakt door systeemzoekopdrachten waarvoor de aanbevolen index in de groep gebruikt kon zijn.
avg_total_system_cost float Gemiddelde kosten van systeemqueries die door de index in de groep kunnen worden verlaagd.
avg_system_impact float Gemiddeld procentueel voordeel dat systeemzoekopdrachten kunnen ervaren als deze ontbrekende indexgroep wordt geïmplementeerd. De waarde betekent dat de querykosten gemiddeld met dit percentage zouden dalen als deze ontbrekende indexgroep werd geïmplementeerd.

Opmerkingen

De informatie die door sys.dm_db_missing_index_group_stats wordt teruggegeven, wordt bijgewerkt bij elke query-uitvoering, niet bij elke querycompilatie of hercompilatie. Gebruiksstatistieken worden niet bijgehouden en worden alleen bewaard totdat de database-engine opnieuw is opgestart. Databasebeheerders moeten periodiek back-ups maken van de ontbrekende indexinformatie als ze de gebruiksstatistieken na serverrecycling willen behouden. Gebruik de kolom sqlserver_start_time in sys.dm_os_sys_info om de laatste opstarttijd van de database-engine te vinden.

Opmerking

De uitkomsten voor deze DMV zijn beperkt tot 600 rijen. Elke rij bevat één ontbrekende index. Als je meer dan 600 ontbrekende indexen hebt, moet je de bestaande ontbrekende indexen aanpakken zodat je daarna de nieuwere kunt bekijken.

Een ontbrekende indexgroep kan meerdere zoekopdrachten hebben die dezelfde index nodig hadden. Voor meer informatie over individuele zoekopdrachten die een specifieke index in deze DMV nodig hadden, zie sys.dm_db_missing_index_group_stats_query.

Permissions

Om deze dynamische beheerweergave te bevragen, moeten gebruikers de toestemming VIEW SERVER STATE of een andere toestemming krijgen die de VIEW SERVER STATE toestemming impliceert.

Machtigingen voor SQL Server 2022 en hoger

Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.

Voorbeelden

De volgende voorbeelden illustreren hoe je de sys.dm_db_missing_index_group_stats dynamische beheerweergave kunt gebruiken. Lees meer over richtlijnen voor het gebruik van ontbrekende indexen in lijn met niet-geclusterde indexen met suggesties voor ontbrekende indexen.

Eén. Vind de 10 ontbrekende indexen met de hoogste verwachte verbetering voor gebruikerszoekopdrachten

De volgende query bepaalt welke 10 ontbrekende indexen de hoogst verwachte cumulatieve verbetering, in aflopende volgorde, voor gebruikersqueries zouden opleveren.

SELECT TOP 10 *  
FROM sys.dm_db_missing_index_group_stats  
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;  

B. Zoek de individuele ontbrekende indexen en hun kolomdetails voor een bepaalde ontbrekende indexgroep

De volgende query bepaalt welke ontbrekende indexen een bepaalde ontbrekende indexgroep vormen en toont hun kolomdetails. Voor dit voorbeeld is de ontbrekende index group_handle 24.

SELECT migs.group_handle, mid.*  
FROM sys.dm_db_missing_index_group_stats AS migs  
INNER JOIN sys.dm_db_missing_index_groups AS mig  
    ON (migs.group_handle = mig.index_group_handle)  
INNER JOIN sys.dm_db_missing_index_details AS mid  
    ON (mig.index_handle = mid.index_handle)  
WHERE migs.group_handle = 24;  

Deze zoekopdracht geeft de naam van de database, het schema en de tabel waar een index ontbreekt. Het geeft ook de namen van de kolommen die voor de indexsleutel gebruikt moeten worden. Bij het schrijven van de CREATE INDEX DDL-instructie om ontbrekende indexen te implementeren, vermeld dan eerst de gelijkheidskolommen en daarna de ongelijkheidskolommen in de ON < table_name-clausule> van de CREATE INDEX-instructie. Opgenomen kolommen moeten worden vermeld in de INCLUDE-clausule van de CREATE INDEX-instructie. Om een effectieve volgorde voor de gelijkheidskolommen te bepalen, sorteer je ze op basis van hun selectiviteit, waarbij je eerst de meest selectieve kolommen vermeld (meest links in de kolomlijst). Leer hoe je suggesties voor ontbrekende indexen toepast.

Volgende stappen

Lees meer over de ontbrekende indexfunctie in de volgende artikelen: