Articles

sys.dm_db_missing_index_details (Transact-SQL)

Posted by admin
  • 03/20/2017
  • 2 minutes to read
    • W
    • r
    • c
    • M
    • s
    • +5

Applies to: SQL Server (all supported versions) Azure SQL Database

Returns detailed information about missing indexes, excluding spatial indexes.

Nel database SQL di Azure, le viste di gestione dinamica non possono esporre informazioni che potrebbero influire sul contenimento del database o esporre informazioni su altri database a cui l’utente ha accesso. Per evitare di esporre queste informazioni, ogni riga che contiene dati che non appartengono al tenant connesso viene filtrata.

Nome colonna Tipo di dati Descrizione
index_handle int Identifica un particolare indice mancante. L’identificatore è univoco in tutto il server. index_handle è la chiave di questa tabella.
database_id smallint Identifica il database in cui risiede la tabella con l’indice mancante.
object_id int Identifica la tabella in cui manca l’indice.
equality_columns nvarchar(4000) Elenco separato da virgole di colonne che contribuiscono ai predicati di uguaglianza del modulo:
tabella.column =constant_value
inequality_columns nvarchar(4000) Elenco separato da virgole di colonne che contribuiscono ai predicati di disuguaglianza, ad esempio, predicati del modulo:
tabella.colonna > constant_value
Qualsiasi operatore di confronto diverso da ” = ” esprime disuguaglianza.
included_columns nvarchar(4000) Elenco separato da virgole di colonne necessarie come colonne di copertura per la query. Per ulteriori informazioni sulla copertura o sulle colonne incluse, vedere Creazione di indici con colonne incluse.
Per gli indici ottimizzati per la memoria (sia hash che non cluster ottimizzati per la memoria), ignorare included_columns. Tutte le colonne della tabella sono incluse in ogni indice ottimizzato per la memoria.
istruzione nvarchar(4000) Nome della tabella in cui manca l’indice.

Note

Le informazioni restituite da sys.dm_db_missing_index_details vengono aggiornate quando una query viene ottimizzata da query optimizer e non viene mantenuta. Le informazioni sull’indice mancanti vengono mantenute solo fino al riavvio di SQL Server. Gli amministratori del database devono periodicamente eseguire copie di backup delle informazioni dell’indice mancanti se desiderano mantenerle dopo il riciclaggio del server.

Per determinare di quali gruppi di indici mancanti fa parte un particolare indice mancante, è possibile interrogare la vista di gestione dinamica sys.dm_db_missing_index_groups equijoining con sys.dm_db_missing_index_details in base alla colonna index_handle.

Nota

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

Utilizzo di indici Mancanti di Informazioni nelle Istruzioni CREATE INDEX

Per convertire le informazioni restituite da sys.dm_db_missing_index_details in un’istruzione CREATE INDEX sia per la memoria ottimizzata e disco basato su indici, colonne di uguaglianza dovrebbe essere messo prima le colonne di disuguaglianza, e, insieme, dovrebbero rendere la chiave di indice. Le colonne incluse devono essere aggiunte all’istruzione CREATE INDEX utilizzando la clausola INCLUDE. Per determinare un ordine effettivo per le colonne di uguaglianza, ordinarle in base alla loro selettività: elencare prima le colonne più selettive (più a sinistra nell’elenco delle colonne).

Per ulteriori informazioni sugli indici ottimizzati per la memoria, vedere Indici per tabelle ottimizzate per la memoria.

Consistenza della transazione

Se una transazione crea o elimina una tabella, le righe contenenti informazioni di indice mancanti sugli oggetti eliminati vengono rimosse da questo oggetto di gestione dinamica, preservando la coerenza della transazione.

Autorizzazioni

Su SQL Server, richiede l’autorizzazione VIEW SERVER STATE.
Negli obiettivi di servizio SQL Database Basic, S0 e S1 e per i database nei pool elastici, è richiesto l’account Server admin o un account Azure Active Directory admin. Su tutti gli altri obiettivi del servizio database SQL, nel database è richiesta l’autorizzazione VIEW DATABASE STATE.

Vedere anche

Related Post

Leave A Comment