sys.dm_db_missing_index_columns (Transact-SQL)
Restituisce informazioni sulle colonne di una tabella di database in cui manca un indice, escludendo gli indici spaziali. 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:
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 sono:
|
Osservazioni
Le informazioni restituite da sys.dm_db_missing_index_columns vengono aggiornate in caso di ottimizzazione di una query tramite Query Optimizer e non sono persistenti. Le informazioni relative agli indici mancanti vengono mantenute solo fino al riavvio di SQL Server. Per mantenere tali informazioni anche dopo il riciclo del server, gli amministratori di database devono eseguirne periodicamente copie di backup.
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.
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 AdventureWorks2012;
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
Vedere anche
Riferimento
sys.dm_db_missing_index_details (Transact-SQL)