Partager via


sys.dm_db_missing_index_columns (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Retourne des informations sur les colonnes de table de base de données qui manquent un index. sys.dm_db_missing_index_columns est une fonction de gestion dynamique.

Syntaxe

sys.dm_db_missing_index_columns(index_handle)  

Arguments

index_handle
Il s'agit d'un entier qui identifie de manière unique un index manquant. Il peut être obtenu à partir des objets de gestion dynamique suivants :

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

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 et leurs descriptions sont les suivantes :

ÉGALITÉ : Colonne contribue à un prédicat qui exprime l’égalité, de la forme :
table.column = constant_value

INÉGALITÉ : La colonne contribue à un prédicat qui exprime l’inégalité, par exemple, un prédicat de la forme : table.column>constant_value. Tout opérateur de comparaison autre que "=" exprime l'inégalité.

INCLUDE : La colonne n’est pas utilisée pour évaluer un prédicat, mais elle est utilisée 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 n’est pas conservée. Les informations d’index manquantes sont conservées uniquement tant que le moteur de base de données n’est pas redémarré. 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. Utilisez la colonne sqlserver_start_time dans sys.dm_os_sys_info pour rechercher la dernière heure de démarrage du moteur de base de données.

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.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

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

Les suggestions d’index manquantes doivent être combinées si possible avec les autres et avec des index existants dans la base de données active. Découvrez comment appliquer ces suggestions dans l’optimisation des index non cluster avec des suggestions d’index manquantes.

Étapes suivantes

En savoir plus sur la fonctionnalité d’index manquante dans les articles suivants :