Articles

sys.dm_db_missing_index_details (Transact-SQL)

Posted by admin
  • 03/20/2017
  • 2 minutes to read
    • W
    • r
    • c
    • M
    • s
    • +5

Applies to: SQL Server (all supported versions) Azure SQL Database

Returns detailed information about missing indexes, excluding spatial indexes.

Dans la base de données SQL Azure, les vues de gestion dynamique ne peuvent pas exposer les informations qui auraient un impact sur le confinement de la base de données ou exposer des informations sur d’autres bases de données auxquelles l’utilisateur a accès. Pour éviter d’exposer ces informations, chaque ligne contenant des données qui n’appartiennent pas au locataire connecté est filtrée.

Nom de la colonne Type de données Description
index_handle int Identifie un index manquant particulier. L’identifiant est unique sur le serveur. index_handle est la clé de cette table.
database_id smallint Identifie la base de données où réside la table avec l’index manquant.
object_id int Identifie la table où l’index est manquant.
equality_columns nvarchar(4000) Liste de colonnes séparées par des virgules qui contribuent aux prédicats d’égalité de la forme: table
.colonne = valeur constante
inequality_columns nvarchar(4000) Liste de colonnes séparées par des virgules qui contribuent aux prédicats d’inégalité, par exemple, les prédicats de la forme: table
.colonne > valeur constante
Tout opérateur de comparaison autre que « = » exprime l’inégalité.
included_columns nvarchar(4000) Liste de colonnes séparées par des virgules nécessaires pour couvrir les colonnes de la requête. Pour plus d’informations sur la couverture ou les colonnes incluses, consultez Créer des index avec des colonnes incluses.
Pour les index optimisés pour la mémoire (à la fois hachage et non clusterisés optimisés pour la mémoire), ignorez included_columns. Toutes les colonnes de la table sont incluses dans chaque index optimisé pour la mémoire.
instruction nvarchar(4000) Nom de la table où l’index est manquant.

Remarques

Les informations renvoyées par sys.dm_db_missing_index_details sont mises à jour lorsqu’une requête est optimisée par l’optimiseur de requête et ne sont pas persistantes. Les informations d’index manquantes ne sont conservées que jusqu’au redémarrage de SQL Server. Les administrateurs de base de données doivent périodiquement effectuer des copies de sauvegarde des informations d’index manquantes s’ils souhaitent les conserver après le recyclage du serveur.

Pour déterminer les groupes d’index manquants dont fait partie un index manquant particulier, vous pouvez interroger la vue de gestion dynamique sys.dm_db_missing_index_groups en l’associant à sys.dm_db_missing_index_details en fonction de la colonne index_handle.

Note

Le jeu de résultats pour ce DMV est limité à 600 lignes. Chaque ligne contient un index manquant. Si vous avez plus de 600 index manquants, vous devez traiter les index manquants existants afin de pouvoir afficher les plus récents.

Utilisation des informations d’index manquantes dans les instructions CREATE INDEX

Pour convertir les informations renvoyées par sys.dm_db_missing_index_details en une instruction CREATE INDEX pour les index optimisés pour la mémoire et les index basés sur disque, les colonnes d’égalité doivent être placées avant les colonnes d’inégalité, et ensemble elles doivent constituer la clé de l’index. Les colonnes incluses doivent être ajoutées à l’instruction CREATE INDEX à l’aide de la clause INCLUDE. Pour déterminer un ordre effectif pour les colonnes d’égalité, ordonnez-les en fonction de leur sélectivité : listez d’abord les colonnes les plus sélectives (les plus à gauche de la liste des colonnes).

Pour plus d’informations sur les index optimisés pour la mémoire, consultez Index pour les tables optimisées pour la mémoire.

Cohérence des transactions

Si une transaction crée ou supprime une table, les lignes contenant les informations d’index manquantes sur les objets supprimés sont supprimées de cet objet de gestion dynamique, préservant ainsi la cohérence des transactions.

Autorisations

Sur SQL Server, nécessite une autorisation VIEW SERVER STATE.
Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans des pools élastiques, le compte Server admin ou un compte Azure Active Directory admin est requis. Sur tous les autres objectifs de service de base de données SQL, l’autorisation VIEW DATABASE STATE est requise dans la base de données.

Voir aussi

Related Post

Leave A Comment