Limitations de la fonctionnalité d'index manquants

La fonctionnalité d'index manquant est soumise aux limitations suivantes :

  • Elle ne sert pas à optimiser la configuration d'un index.

  • Elle ne peut pas recueillir de statistiques pour plus de 500 groupes d'index manquants.

  • Elle ne spécifie pas d'ordre pour l'utilisation de colonnes dans un index.

  • Elle retourne des informations de prix moins précises pour les requêtes contenant uniquement des prédicats d'inégalité.

  • Elle ne signale que les colonnes incluses pour certaines requêtes, il faut donc sélectionner manuellement les colonnes de clé d'index.

  • Elle retourne uniquement des informations brutes sur les colonnes dont les index peuvent être manquants.

  • Elle ne suggère pas d'index filtrés.

  • Elle peut retourner différents prix pour le même groupe d'index manquant qui apparaît plusieurs fois dans les Showplans XML.

  • Elle ne considère pas les plans de requête simples.

Les sections ci-dessous fournissent des informations supplémentaires sur ces limitations.

Optimisation d'une configuration d'index

La fonctionnalité d'index manquants est un outil léger qui permet de rechercher les index manquants et d'améliorer nettement les performances des requêtes. Elle ne fournit pas d'informations adéquates susceptibles d'optimiser la configuration de votre indexation. Pour cela, utilisez l'Assistant Paramétrage du Moteur de base de données. Pour plus d'informations sur l'Assistant Paramétrage du Moteur de base de données, consultez Paramétrage du modèle physique de la base de données et Fonctionnalités connexes pour le paramétrage des requêtes.

Nombre maximal de groupes d'index manquants

Des statistiques sont recueillies pour un maximum de 500 groupes d'index manquants. Lorsque ce seuil est atteint, aucune autre donnée de groupe d'index manquants n'est recueillie. Ce seuil n'est pas paramétrable et ne peut pas être modifié.

Ordre de colonne d'index

La fonctionnalité d'index manquants ne tient pas compte de l'ordre de tri optimal lorsqu'elle suggère un index. Considérons l'exemple de requête suivant :

SELECT column_a, column_b
FROM table_1
WHERE column_a < 10000
AND column_b < 10000
ORDER BY column_b, column_a

La fonctionnalité d'index manquants peut suggérer un index et répertorier column_a avant column_b, bien que l'ordre de tri préconisé soit column_b, column_a qui correspond à l'ordre de tri de la requête. Lorsque vous créez l'instruction DDL (Data Definition Language) pour implémenter un index manquant, choisissez l'ordre de tri optimal en examinant les requêtes individuelles de la charge de travail. Pour plus d'informations sur le classement des colonnes dans les instructions CREATE INDEX en fonction de la sortie produite par la fonctionnalité d'index manquants, consultez Utilisation des informations d'index manquant pour l'écriture d'instructions CREATE INDEX.

Requêtes impliquant des prédicats d'inégalité uniquement

La fonctionnalité d'index manquants utilise un modèle simple afin de générer des informations de coûts pour les requêtes impliquant uniquement des prédicats d'inégalité. Par conséquent, les informations de coûts retournées pour ces requêtes peuvent être moins précises que les informations retournées pour les requêtes impliquant des égalités. Considérons l'exemple de requête suivant qui ne contient aucun prédicat d'égalité :

SELECT *
FROM table_1
WHERE column_a > -1
AND column_b > -1

Cet exemple de requête contient uniquement un prédicat d'inégalité (WHERE column_a > -1 AND column_b > -1). Supposons que toutes les lignes dans table_1 remplissent les critères pour les prédicats column_a > -1 et column_b > -1. Dans ce cas, la fonctionnalité d'index manquants peut recommander par erreur un index sur column_a et sur column_b. Les nombres associés signalés par la vue de gestion dynamique sys.dm_db_missing_indexes_group_stats peuvent alors s'avérer également incorrects.

Retourne uniquement des colonnes include pour certaines requêtes

Il arrive parfois que la fonctionnalité ne signale que des informations d'utilisation pour les colonnes include. Par exemple, la fonctionnalité peut signaler des colonnes d'égalité = { }, des colonnes d'inégalité = { }, et des colonnes include = {b, c, …}. Dans ce cas, vous devez sélectionner une des colonnes include pour la colonne de clé d'index. Utilisez les informations d'index manquants que retournent les autres requêtes qui bénéficient des mêmes colonnes afin de déterminer quelles colonnes include doivent être sélectionnées pour la clé d'index.

Retourne uniquement des informations brutes

La fonctionnalité d'index manquants retourne des informations brutes sur les colonnes dont les index sont peut être manquants. Cela signifie que les informations retournées peuvent nécessiter un traitement supplémentaire avant de pouvoir utiliser les informations pour créer un index.

Par exemple, si la colonne concernée est une colonne calculée et que le calcul n'est pas déterministe ni précis, l'instruction CREATE INDEX de cette colonne échouera. Dans le cas d'un calcul imprécis, la colonne doit être d'abord maintenue, puis vous pouvez créer l'index.

Retourne différents coûts pour le même groupe d'index manquants dans les Showplans XML

Les groupes d'index manquants peuvent apparaître plusieurs fois dans les Showplans XML et signaler des coûts différents à chaque affichage du groupe d'index manquants. Ce cas de figure se produit lorsque différentes parties d'une seule requête bénéficient différemment du même groupe d'index manquants.

Prenons l'exemple de requête suivant :

SELECT i.CustomerID, c.ModifiedDate, City
FROM NewIndividual i JOIN NewCustomer c ON i.CustomerID = c.CustomerID
                    AND c.CustomerType = 'I'
          JOIN NewCustomerAddress ca ON ca.CustomerID = c.CustomerID
          JOIN NewAddress a ON a.AddressID = ca.AddressID
WHERE i.CustomerID = 16701

Dans cette requête, les deux conditions de jointure différentes de la colonne CustomerID peuvent produire deux groupes d'index manquants identiques qui contiennent le même index dans la colonne NewIndividual.CustomerID. Dans ce cas, la vue de gestion dynamique sys.dm_db_missing_index_groups ne possède qu'une seule ligne pour le groupe d'index manquants. Cependant, le groupe d'index manquants apparaît à plusieurs reprises dans la sortie du Showplan XML et indique différents coûts pour les différentes conditions de jointure.