Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x) en latere versies
Van Azure SQL Database
Azure SQL Managed Instance
SQL Database in Microsoft Fabric
Geeft informatie terug over zoekopdrachten die een ontbrekende index nodig hadden van groepen ontbrekende indexen, exclusief ruimtelijke indexen. Er kunnen per ontbrekende indexgroep meer dan één query worden teruggegeven. Een ontbrekende indexgroep kan meerdere queries hebben die dezelfde index nodig hadden.
In Azure SQL Database kunnen dynamische beheerweergaven geen informatie blootstellen die de database-inhoud zou beïnvloeden, of informatie over andere databases waar de gebruiker toegang toe 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 aangesloten index_group_handle. |
query_hash |
binary(8) | Binaire hashwaarde die wordt berekend op de query en wordt gebruikt om query's met vergelijkbare logica te identificeren. U kunt de query-hash gebruiken om het geaggregeerde resourcegebruik te bepalen voor query's die alleen verschillen per letterlijke waarden. |
query_plan_hash |
binary(8) | Binaire hashwaarde berekend op het queryuitvoeringsplan en wordt gebruikt om vergelijkbare queryuitvoeringsplannen te identificeren. U kunt hash van het queryplan gebruiken om de cumulatieve kosten van query's met vergelijkbare uitvoeringsplannen te vinden. Altijd 0x000 wanneer een native gecompileerde opgeslagen procedure een geheugengeoptimaliseerde tabel bevraagt. |
last_sql_handle |
varbinary(64) | Een token dat uniek de batch- of opgeslagen procedure identificeert van de laatst gecompileerde instructie die deze index nodig had. Deze last_sql_handle kunnen worden gebruikt om de SQL-tekst van de query op te halen door de dynamische beheerfunctie sys.dm_exec_sql_text aan te roepen. |
last_statement_start_offset |
int | Geeft aan, in bytes, beginnend met 0, de startpositie van de query die de rij beschrijft binnen de tekst van zijn batch of persisted object voor de laatste gecompileerde instructie die deze index nodig had in zijn SQL-batch. |
last_statement_end_offset |
int | Geeft aan, in bytes, beginnend met 0, de eindpositie van de query die de rij beschrijft binnen de tekst van zijn batch of behouden object, voor de laatste gecompileerde instructie die deze index nodig had in zijn SQL-batch. |
last_statement_sql_handle |
varbinary(64) | Een token dat uniek de batch- of opgeslagen procedure identificeert van de laatst gecompileerde instructie die deze index nodig had. Gebruikt door Query Store. In tegenstelling tot last_sql_handle, sys.query_store_query_text verwijst naar de statement_sql_handle weergave die wordt gebruikt door de Query Store-catalogus sys.query_store_query_text.Retourneert 0 als Query Store niet was ingeschakeld toen de query werd gecompileerd. |
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_query 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 wordt 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. Je kunt ook ontbrekende indexen behouden met Query Store.
Permissions
Om deze dynamische beheerweergave te bevragen, moeten gebruikers de VIEW SERVER STATE toestemming of een enkele toestemming die die VIEW SERVER STATE toestemming impliceert worden verleend, voor SQL Server 2019 (15.x) en eerdere versies.
Vereist toestemming VIEW SERVER PERFORMANCE STATE op de server, voor SQL Server 2022 (16.x) en latere versies.
Voorbeelden
De volgende voorbeelden illustreren hoe je de sys.dm_db_missing_index_group_stats_query dynamische beheerweergave kunt gebruiken.
Eén. Vind de nieuwste querytekst voor de top 10 hoogst verwachte verbeteringen voor gebruikerszoekopdrachten
De volgende zoekopdracht geeft de laatst opgenomen zoektekst terug voor de 10 ontbrekende indexen die de hoogst verwachte cumulatieve verbetering zouden opleveren, in aflopende volgorde.
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;
Verwante inhoud
- Niet-geclusterde indexen afstemmen met behulp van suggesties voor ontbrekende indexen
- 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)
- MAAK INDEX AAN (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Prestaties controleren via de Query Store