Condividi tramite


sys.dm_db_missing_index_group_stats (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Restituisce informazioni di riepilogo su gruppi di indici mancanti, escludendo gli indici spaziali.

Nel database SQL di Azure, le viste a gestione dinamica non possono esporre le informazioni che influenzerebbero l'indipendenza del database o le informazioni sugli altri database a cui l'utente dispone di accesso. Per evitare di esporre queste informazioni, ogni riga contenente dati che non appartengono al tenant connesso viene filtrata.

Nome colonna Tipo di dati Descrizione
group_handle int Identifica un gruppo di indici mancanti. Questo identificatore è univoco a livello di server.

Le altre colonne contengono informazioni su tutte le query per cui l'indice del gruppo viene considerati mancante.

Un gruppo di indici contiene un solo indice.

Può essere aggiunto a index_group_handle in sys.dm_db_missing_index_groups.
unique_compiles bigint Numero di compilazioni e ricompilazioni per cui può essere utile questo gruppo di indici mancanti. Il valore di questa colonna può essere determinato dalle compilazioni e ricompilazioni di numerose query diverse.
user_seeks bigint Numero di operazioni Seek causate da query utente per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
user_scans bigint Numero di analisi causate da query utente per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
last_user_seek datetime Data e ora dell'ultima operazione Seek causata da query utente per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
last_user_scan datetime Data e ora dell'ultima analisi causata da query utente per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
avg_total_user_cost float Costo medio delle query utente che potrebbe essere ridotto dall'indice del gruppo.
avg_user_impact float Vantaggio percentuale medio che potrebbe essere garantito alle query utente con l'implementazione del gruppo di indici mancanti. Questo valore indica la percentuale di riduzione media del costo delle query in caso di implementazione del gruppo di indici mancanti.
system_seeks bigint Numero di operazioni Seek causate da query di sistema, ad esempio query su statistiche automatiche, per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo. Per altre informazioni, vedere Classe di evento Auto Stats.
system_scans bigint Numero di analisi causate da query di sistema per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
last_system_seek datetime Data e ora dell'ultima operazione Seek di sistema causata da query di sistema per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
last_system_scan datetime Data e ora dell'ultima analisi di sistema causata da query di sistema per cui avrebbe potuto essere utilizzato l'indice consigliato del gruppo.
avg_total_system_cost float Costo medio delle query di sistema che potrebbe essere ridotto dall'indice del gruppo.
avg_system_impact float Vantaggio percentuale medio che potrebbe essere garantito alle query di sistema con l'implementazione del gruppo di indici mancanti. Questo valore indica la percentuale di riduzione media del costo delle query in caso di implementazione del gruppo di indici mancanti.

Osservazioni:

Le informazioni restituite da sys.dm_db_missing_index_group_stats vengono aggiornate da ogni esecuzione di query, non da ogni compilazione o ricompilazione di query. Le statistiche di utilizzo non vengono mantenute e mantenute solo fino al riavvio del motore di database. Per mantenere le statistiche di utilizzo anche dopo il riciclo del server, gli amministratori di database devono eseguire periodicamente copie di backup delle informazioni relative agli indici mancanti. Usare la colonna sqlserver_start_time in sys.dm_os_sys_info per trovare l'ora di avvio dell'ultimo motore di database.

Nota

Il set di risultati per questa DMV è limitato a 600 righe. Ogni riga contiene un indice mancante. Se sono presenti più di 600 indici mancanti, è necessario risolvere gli indici mancanti esistenti in modo da poter visualizzare quelli più recenti.

Un gruppo di indici mancante può avere più query che richiedevano lo stesso indice. Per altre informazioni sulle singole query che richiedevano un indice specifico in questa DMV, vedere sys.dm_db_missing_index_group_stats_query.

Autorizzazioni

Per eseguire query su questa vista a gestione dinamica, è necessario che agli utenti sia stata concessa l'autorizzazione VIEW SERVER STATE o qualsiasi autorizzazione che include l'autorizzazione VIEW SERVER STATE.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.

Esempi

Negli esempi seguenti viene illustrato come usare la sys.dm_db_missing_index_group_stats visualizzazione a gestione dinamica. Altre informazioni sulle linee guida per l'uso di indici mancanti per ottimizzare gli indici non cluster con suggerimenti per l'indice mancanti.

R. Trovare i 10 indici mancanti con il massimo miglioramento previsto per le query utente

La query seguente determina i 10 indici mancanti in grado di determinare il massimo miglioramento cumulativo previsto, in ordine decrescente, per le query utente.

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. Trovare i singoli indici mancanti e i relativi dettagli delle colonne per un determinato gruppo di indici mancanti

La query seguente identifica gli indici mancanti che costituiscono un determinato gruppo di indici mancanti e ne visualizza i dettagli delle colonne. Ai fini di questo esempio, l'indice group_handle mancante è 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;  

Questa query indica il nome del database, dello schema e della tabella in cui un indice risulta mancante, nonché i nomi delle colonne da utilizzare per la chiave di indice. Quando si scrive l'istruzione CREATE INDEX DDL per implementare indici mancanti, elencare prima le colonne di uguaglianza e quindi le colonne di disuguaglianza nella clausola ON <table_name> dell'istruzione CREATE INDEX. Le colonne incluse devono essere elencate nella clausola INCLUDE dell'istruzione CREATE INDEX. Per determinare un ordine efficiente per le colonne di uguaglianza, ordinarle in base alla selettività a partire dalle colonne più selettive, all'estrema sinistra nell'elenco di colonne. Informazioni su come applicare suggerimenti per l'indice mancanti.

Passaggi successivi

Altre informazioni sulla funzionalità di indice mancante sono disponibili negli articoli seguenti: