Condividi tramite


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

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:

ValoreDescrizione
EQUALITYLa colonna contribuisce a un predicato che esprime uguaglianza, ad esempio un predicato nella forma seguente: table.column =constant_value
INEQUALITYLa colonna contribuisce a un predicato che esprime disuguaglianza, ad esempio un predicato nella forma seguente: table.column > constant_value Qualsiasi operatore di confronto diverso da "=" esprime disuguaglianza. Per l'elenco completo degli operatori di confronto, vedere Operatori di confronto (Motore di database).
INCLUDELa colonna non viene utilizzata per valutare un predicato, ma per altri scopi, ad esempio per coprire una query.

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.

Per informazioni sull'attivazione e sulla disattivazione della raccolta di informazioni sugli indici mancanti, vedere Informazioni sulla funzionalità degli indici mancanti.

L'output generato dalla funzione a gestione dinamica sys.dm_db_missing_index_columns può essere utilizzato da qualsiasi strumento in grado di leggere le informazioni sugli indici mancanti corrispondenti a index_handle, elaborarle e convertirle in istruzioni DDL CREATE INDEX per l'implementazione dell'indice mancante. Per ulteriori informazioni sulla creazione di istruzioni DDL, vedere Utilizzo delle informazioni sugli indici mancanti per scrivere istruzioni CREATE INDEX.

Per ulteriori informazioni sui limiti di questa funzionalità, vedere Limitazioni della funzionalità degli indici mancanti.

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. Per ulteriori informazioni sulla consistenza delle transazioni in relazione agli oggetti a gestione dinamica per gli indici mancanti, vedere Informazioni sulla funzionalità degli indici mancanti.

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 AdventureWorks;
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