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 :
- Paramétrer les index non-cluster avec les suggestions d’index manquants
- 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)
- sys.dm_db_missing_index_group_stats_query (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)