sys.dm_db_missing_index_columns (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Retourne des informations sur les colonnes de table de base de données qui ne disposent pas d’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É : La colonne contribue à un prédicat qui exprime l’égalité, sous la forme suivante :
table.column = constant_value

INÉGALITÉ : La colonne contribue à un prédicat qui exprime une 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 jusqu’à ce que le moteur de base de données soit 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 ultérieures

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, dans la mesure du possible, entre elles et avec les index existants dans la base de données active. Découvrez comment appliquer ces suggestions dans ajuster les index non cluster avec des suggestions d’index manquantes.

Étapes suivantes

Pour en savoir plus sur la fonctionnalité d’index manquant, consultez les articles suivants :