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