Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2019 (15.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
SQL Database i Microsoft Fabric
Returnerar information om frågor som behövde ett saknat index från grupper av saknade index, exklusive rumsliga index. Mer än en fråga kan returneras per saknad indexgrupp. En saknad indexgrupp kunde ha flera frågor som behövde samma index.
I Azure SQL Database kan dynamiska hanteringsvyer inte exponera information som skulle påverka databasens innehåll, eller exponera information om andra databaser som användaren har tillgång till. För att undvika att exponera den här informationen filtreras varje rad som innehåller data som inte tillhör den anslutna klientorganisationen bort.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
group_handle |
int | Identifierar en grupp saknade index. Denna identifierare är unik över hela servern. De andra kolumnerna ger information om alla frågor där indexet i gruppen anses saknas. En indexgrupp innehåller endast ett index. Kan anslutas till index_group_handlei sys.dm_db_missing_index_groups. |
query_hash |
binary(8) | Binär hash-värde som beräknas på frågan och används för att identifiera frågor med liknande logik. Du kan använda frågehashen för att fastställa den aggregerade resursanvändningen för frågor som endast skiljer sig åt med literalvärden. |
query_plan_hash |
binary(8) | Binär hash-värde som beräknas på frågekörningsplanen och används för att identifiera liknande frågekörningsplaner. Du kan använda hash för frågeplan för att hitta den kumulativa kostnaden för frågor med liknande körningsplaner. Alltid 0x000 när en nativt kompilerad lagrad procedur frågar en minnesoptimerad tabell. |
last_sql_handle |
varbinary(64) | En token som unikt identifierar batchen eller den lagrade proceduren för det senaste kompilerade satsen som behövde detta index. De last_sql_handle kan användas för att hämta SQL-texten i frågan genom att anropa den dynamiska hanteringsfunktionen sys.dm_exec_sql_text. |
last_statement_start_offset |
int | Indikerar, i bytes, som börjar med 0, startpositionen för den fråga som raden beskriver i texten i sin batch eller persisterade objekt för det senaste kompilerade satsen som behövde detta index i sin SQL-batch. |
last_statement_end_offset |
int | Indikerar, i bytes, med början på 0, slutpositionen för den fråga som raden beskriver inom texten i dess batch eller persisterade objekt, för den senaste kompilerade satsen som behövde detta index i sin SQL-batch. |
last_statement_sql_handle |
varbinary(64) | En token som unikt identifierar batchen eller den lagrade proceduren för det senaste kompilerade satsen som behövde detta index. Används av Query Store. Till skillnad från last_sql_handle, sys.query_store_query_text refererar till den statement_sql_handle som används av Query Store-katalogvyn sys.query_store_query_text.Returneras 0 om Query Store inte var aktiverat när frågan kompilerades. |
user_seeks |
bigint | Antal sökningar orsakade av användarfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
user_scans |
bigint | Antal skanningar orsakade av användarfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
last_user_seek |
datetime | Datum och tid för senaste sökning orsakad av användarfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
last_user_scan |
datetime | Datum och tid för senaste skanning orsakad av användarfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
avg_total_user_cost |
float | Genomsnittlig kostnad för användarfrågorna som kan minskas av indexet i gruppen. |
avg_user_impact |
float | Genomsnittlig procentuell fördel som användarfrågor skulle kunna uppleva om denna saknade indexgrupp implementerades. Värdet innebär att frågekostnaden i genomsnitt skulle minska med denna procentandel om denna saknade indexgrupp implementerades. |
system_seeks |
bigint | Antal sökningar orsakade av systemfrågor, såsom autostatistikfrågor, som det rekommenderade indexet i gruppen kunde ha använts för. För mer information, se Auto Stats Event Class. |
system_scans |
bigint | Antal skanningar orsakade av systemfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
last_system_seek |
datetime | Datum och tid för senaste systemsökning orsakad av systemfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
last_system_scan |
datetime | Datum och tid för senaste systemskanning orsakad av systemfrågor som det rekommenderade indexet i gruppen kunde ha använts för. |
avg_total_system_cost |
float | Genomsnittskostnaden för systemfrågorna som kan minskas av indexet i gruppen. |
avg_system_impact |
float | Genomsnittlig procentuell fördel som systemfrågor kan uppleva om denna saknade indexgrupp implementerades. Värdet innebär att frågekostnaden i genomsnitt skulle minska med denna procentandel om denna saknade indexgrupp implementerades. |
Anmärkningar
Informationen som returneras av sys.dm_db_missing_index_group_stats_query uppdateras vid varje frågeexekvering, inte vid varje frågekompilering eller omkompilering. Användningsstatistik sparas inte och sparas endast tills databasmotorn startas om.
Databasadministratörer bör periodvis göra säkerhetskopior av den saknade indexinformationen om de vill behålla användningsstatistiken efter serveråtervinning. Använd kolumnen sqlserver_start_time i sys.dm_os_sys_info för att hitta den senaste starttiden för databasmotorn. Du kan också behålla saknade index med Query Store.
Permissions
För att söka denna dynamiska hanteringsvy måste användare beviljas VIEW SERVER STATE den behörighet eller någon behörighet som innebär denna VIEW SERVER STATE behörighet, för SQL Server 2019 (15.x) och tidigare versioner.
Kräver behörighet VIEW SERVER PERFORMANCE STATE på servern, för SQL Server 2022 (16.x) och senare versioner.
Examples
Följande exempel illustrerar hur man använder den dynamiska sys.dm_db_missing_index_group_stats_query hanteringsvyn.
A. Hitta den senaste frågetexten för de tio högst förväntade förbättringarna för användarfrågor
Följande fråga returnerar den senaste registrerade frågetexten för de 10 saknade indexen som skulle ge den högsta förväntade kumulativa förbättringen, i fallande ordning.
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;
Relaterat innehåll
- Justera icke-klustrade index med förslag på saknade 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)
- SKAPA INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Övervaka prestanda med hjälp av Query Store