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 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_valueTout opérateur de comparaison autre que "=" exprime l'inégalité.
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 les conserver après le recyclage du serveur.

Cohérence transactionnelle

Si une transaction crée ou supprime une table, les lignes qui contiennent les informations d'index manquants 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.

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

Voir aussi

Référence

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

sys.dm_db_missing_index_group_stats (Transact-SQL)