sys.dm_db_missing_index_columns (Transact-SQL)

Si applica a:SQL ServerDatabase SQL diAzure Istanza gestita di SQL di Azure

Restituisce informazioni sulle colonne della tabella di database mancanti in un indice. sys.dm_db_missing_index_columns è una funzione a gestione dinamica.

Sintassi

sys.dm_db_missing_index_columns(index_handle)  

Argomenti

index_handle
Valore intero che identifica in modo univoco un indice mancante. Può essere ricavato dagli oggetti a gestione dinamica seguenti:

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

Tabella restituita

Nome colonna Tipo di dati Descrizione
column_id int ID della colonna.
column_name sysname Nome della colonna della tabella.
column_usage varchar(20) Modalità di utilizzo della colonna da parte della query. I valori possibili e le relative descrizioni sono:

UGUAGLIANZA: la colonna contribuisce a un predicato che esprime l'uguaglianza, del formato:
constant_value table.column =

DISUGUAGLIANZA: la colonna contribuisce a un predicato che esprime la disuguaglianza, ad esempio un predicato del formato table.column >constant_value. Qualsiasi operatore di confronto diverso da "=" esprime disuguaglianza.

INCLUDE: la colonna non viene usata per valutare un predicato, ma viene usata per un altro motivo, ad esempio per coprire una query.

Osservazioni:

Le informazioni restituite da sys.dm_db_missing_index_columns vengono aggiornate quando una query è ottimizzata da Query Optimizer e non è persistente. Le informazioni sull'indice mancanti vengono mantenute solo fino al riavvio del motore di database. Per mantenere tali informazioni anche dopo il riciclo del server, gli amministratori di database devono eseguirne periodicamente copie di backup. Usare la sqlserver_start_time colonna in sys.dm_os_sys_info per trovare l'ora di avvio dell'ultimo motore di database.

Consistenza delle transazioni

Se in una transazione viene creata o eliminata una tabella, le righe contenenti le informazioni sugli indici mancanti per gli oggetti eliminati vengono rimosse da questo oggetto a gestione dinamica, mantenendo la consistenza delle transazioni.

Autorizzazioni

Per eseguire query su questa funzione 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 nel server.

Esempi

Nell'esempio seguente viene eseguita una query sulla tabella Address e quindi viene eseguita un'ulteriore query utilizzando la vista a gestione dinamica sys.dm_db_missing_index_columns per restituire le colonne della tabella per cui manca un indice.

USE AdventureWorks2022;  
GO  
SELECT City, StateProvinceID, PostalCode  
FROM Person.Address  
WHERE StateProvinceID = 9;  
GO  
SELECT mig.*, statement AS table_name,  
    column_id, column_name, column_usage  
FROM sys.dm_db_missing_index_details AS mid  
CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle)  
INNER JOIN sys.dm_db_missing_index_groups AS mig ON mig.index_handle = mid.index_handle  
ORDER BY mig.index_group_handle, mig.index_handle, column_id;  
GO  

I suggerimenti per l'indice mancanti devono essere combinati tra loro e con gli indici esistenti nel database corrente. Informazioni su come applicare questi suggerimenti per ottimizzare gli indici non cluster con suggerimenti per l'indice mancanti.

Passaggi successivi

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