Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : SQL Server 2019 (15.x) et versions
ultérieures d’Azure SQL Database Azure SQL
Managed Instance
SQL database dans Microsoft Fabric
Retourne des informations sur les requêtes qui ont besoin d’un index manquant à partir de groupes d’index manquants, à l’exclusion des index spatiaux. Plus d’une requête peut être retournée par groupe d’index manquant. Un groupe d’index manquant peut avoir plusieurs requêtes nécessitant le même index.
Dans Azure SQL Database, les vues de gestion dynamique ne peuvent pas exposer les informations qui affecteraient la containment de la base de données, ni révéler des informations sur d’autres bases de données auxquelles l’utilisateur a accès. Pour éviter d’exposer ces informations, chaque ligne qui contient des données qui n’appartiennent pas au locataire connecté est filtrée.
| Nom de la colonne | Type de données | Description |
|---|---|---|
group_handle |
int | Identifie un groupe d'index manquant. Cet identificateur est unique sur le serveur. Les autres colonnes fournissent des informations sur toutes les requêtes pour lesquelles l'index du groupe est considéré comme manquant. Un groupe d'index ne contient qu'un seul index. Peut être joint à index_group_handlesys.dm_db_missing_index_groups. |
query_hash |
binary(8) | La valeur de hachage binaire calculée sur la requête et utilisée pour identifier des requêtes avec une logique similaire. Vous pouvez utiliser le hachage de requête pour déterminer l'utilisation des ressources globale pour les requêtes qui diffèrent uniquement par les valeurs littérales. |
query_plan_hash |
binary(8) | Valeur de hachage binaire calculée sur le plan d'exécution de requête et utilisée pour identifier des plans d'exécution de requête semblables. Vous pouvez utiliser le hachage de plan de requête pour rechercher le coût cumulatif de requêtes avec les plans d'exécution semblables. Toujours 0x000 lorsqu’une procédure stockée compilée nativement interroge une table optimisée en mémoire. |
last_sql_handle |
varbinary(64) | Un jeton qui identifie de manière unique la procédure batch ou stockée de la dernière instruction compilée nécessitant cet index. Vous last_sql_handle pouvez l’utiliser pour récupérer le texte SQL de la requête en appelant la fonction de gestion dynamique sys.dm_exec_sql_text. |
last_statement_start_offset |
int | Indique, en octets, en commençant par 0, la position de départ de la requête que la ligne décrit dans le texte de son lot ou objet persistant pour la dernière instruction compilée qui a besoin de cet index dans son lot SQL. |
last_statement_end_offset |
int | Indique, en octets, commençant par 0, la position finale de la requête que la ligne décrit dans le texte de son objet batch ou persisté, pour la dernière instruction compilée qui nécessitait cet index dans son batch SQL. |
last_statement_sql_handle |
varbinary(64) | Un jeton qui identifie de manière unique la procédure batch ou stockée de la dernière instruction compilée nécessitant cet index. Utilisé par Magasin des requêtes. Contrairement last_sql_handleaux références sys.query_store_query_textstatement_sql_handle utilisées par l’affichage catalogue Magasin des requêtes sys.query_store_query_text.Retour 0 si le magasin de requêtes n’était pas activé lors de la compilation de la requête. |
user_seeks |
bigint | Nombre de recherches résultant de requêtes utilisateur pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
user_scans |
bigint | Nombre d'analyses résultant de requêtes utilisateur pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
last_user_seek |
datetime | Date et heure de la dernière recherche résultant de requêtes utilisateur pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
last_user_scan |
datetime | Date et heure de la dernière analyse résultant de requêtes utilisateur pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
avg_total_user_cost |
float | Coût moyen des requêtes utilisateur qui pourrait être réduit grâce à l'index du groupe. |
avg_user_impact |
float | Bénéfice moyen (en pourcentage) dont les requêtes utilisateur pourraient tirer parti si ce groupe d'index manquants était implémenté. Cela signifie que le coût des requêtes diminuerait, en moyenne, de la valeur de ce pourcentage si ce groupe d'index manquants était implémenté. |
system_seeks |
bigint | Nombre de recherches résultant de requêtes système (telles que les requêtes de statistiques automatiques) pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. Pour plus d’informations, consultez La classe d’événements Statistiques automatiques. |
system_scans |
bigint | Nombre d'analyses résultant de requêtes système pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
last_system_seek |
datetime | Date et heure de la dernière recherche système résultant de requêtes système pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
last_system_scan |
datetime | Date et heure de la dernière analyse système résultant de requêtes système pour lesquelles l'index recommandé du groupe pourrait avoir été utilisé. |
avg_total_system_cost |
float | Coût moyen des requêtes système qui pourrait être réduit grâce à l'index du groupe. |
avg_system_impact |
float | Bénéfice moyen (en pourcentage) dont les requêtes système pourraient tirer parti si ce groupe d'index manquants était implémenté. Cela signifie que le coût des requêtes diminuerait, en moyenne, de la valeur de ce pourcentage si ce groupe d'index manquants était implémenté. |
Notes
Les informations retournées par sys.dm_db_missing_index_group_stats_query sont mises à jour par chaque exécution de requête, et non par chaque compilation ou recompilation de requête. Les statistiques d’utilisation ne sont pas conservées et ne sont conservées que jusqu’au redémarrage du moteur de base de données.
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 conserver les statistiques d'utilisation 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. Vous pouvez également conserver les index manquants avec Magasin des requêtes.
autorisations
Pour interroger cette vue de gestion dynamique, les utilisateurs doivent se voir accorder la VIEW SERVER STATE permission ou toute permission impliquant cette VIEW SERVER STATE permission, pour SQL Server 2019 (15.x) et les versions précédentes.
Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur, pour SQL Server 2022 (16.x) et versions ultérieures.
Exemples
Les exemples suivants illustrent comment utiliser la sys.dm_db_missing_index_group_stats_query vue de gestion dynamique.
R : Rechercher le texte de requête le plus récent pour les 10 améliorations attendues les plus élevées pour les requêtes utilisateur
La requête suivante retourne le dernier texte de requête enregistré pour les 10 index manquants qui produiraient l’amélioration cumulative la plus élevée prévue, dans l’ordre décroissant.
SELECT TOP 10
SUBSTRING
(
sql_text.text,
misq.last_statement_start_offset / 2 + 1,
(
CASE misq.last_statement_start_offset
WHEN -1 THEN DATALENGTH(sql_text.text)
ELSE misq.last_statement_end_offset
END - misq.last_statement_start_offset
) / 2 + 1
),
misq.*
FROM sys.dm_db_missing_index_group_stats_query AS misq
CROSS APPLY sys.dm_exec_sql_text(misq.last_sql_handle) AS sql_text
ORDER BY misq.avg_total_user_cost
* misq.avg_user_impact
* (misq.user_seeks + misq.user_scans) DESC;
Contenu connexe
- Paramétrer les index non-cluster avec les suggestions d’index manquants
- sys.dm_db_missing_index_columns (Transact-SQL)
- 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_exec_sql_text (Transact-SQL)
- CRÉER UN INDEX (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Superviser le niveau de performance avec le Magasin des requêtes