sys.dm_db_missing_index_columns (Transact-SQL)

Retourne des informations sur les colonnes des tables de base de données dans lesquelles un index est manquant, à l'exception des index spatiaux. sys.dm_db_missing_index_columns est une fonction de gestion dynamique.

Syntaxe

sys.dm_db_missing_index_columns(index_handle)

Argument

Table retournée

Nom de la colonne

Type de données

Description

column_id

int

Identificateur de la colonne.

column_name

sysname

Nom de la colonne de la table.

column_usage

varchar(20)

Indique la manière dont la colonne est utilisée par la requête. Les valeurs possibles sont les suivantes :

ValeurDescription
EQUALITYLa colonne contribue à un prédicat qui exprime l'égalité, au format : table.column =constant_value
INEQUALITYLa colonne contribue à un prédicat qui exprime l'inégalité, par exemple, un prédicat au format : table.column > constant_value Tout opérateur de comparaison autre que "=" exprime l'inégalité. Pour obtenir une liste complète des opérateurs de comparaison, consultez Opérateurs de comparaison (moteur de base de données).
INCLUDELa colonne n'est pas utilisée pour évaluer un prédicat mais pour une autre raison ; par exemple, pour couvrir une requête.

Notes

Les informations retournées par sys.dm_db_missing_index_columns sont mises à jour lorsqu'une requête est optimisée par l'optimiseur de requête, et elles ne sont pas conservées de manière permanente. Les informations sur les index manquants sont simplement conservées jusqu'au redémarrage de SQL Server. Les administrateurs de base de données doivent effectuer régulièrement des copies de sauvegarde des informations sur les index manquants s'ils souhaitent conserver ces informations après le recyclage du serveur.

Pour plus d'informations sur l'activation et la désactivation de la collecte d'informations sur les index manquants, consultez À propos de la fonctionnalité d'index manquants.

Le résultat de la fonction de gestion dynamique sys.dm_db_missing_index_columns peut être utilisé par les outils pouvant lire les informations sur l'index manquant qui correspondent à un index_handle, traiter les informations, puis les convertir en instructions DDL CREATE INDEX qui implémentent l'index manquant. Pour plus d'informations sur la création d'instructions DDL, consultez Utilisation des informations d'index manquant pour l'écriture d'instructions CREATE INDEX.

Pour plus d'informations sur les limitations de cette fonctionnalité, consultez Limitations de la fonctionnalité d'index manquants.

Cohérence transactionnelle

Si une transaction crée ou supprime une table, les lignes qui contiennent les informations d'index manquant concernant les objets supprimés sont retirées de cet objet de gestion dynamique, ce qui permet de préserver la cohérence des transactions. Pour plus d'informations sur la cohérence des transactions par rapport aux objets de gestion dynamique des index manquants, consultez À propos de la fonctionnalité d'index manquants.

Autorisations

Les utilisateurs doivent bénéficier de l'autorisation VIEW SERVER STATE ou de toute autorisation qui implique l'autorisation VIEW SERVER STATE pour interroger cette fonction de gestion dynamique.

Exemples

L'exemple suivant exécute une requête sur la table Address puis exécute une requête à l'aide de la vue de gestion dynamique sys.dm_db_missing_index_columns pour renvoyer les colonnes de table auxquelles il manque un index.

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