Symptômes
Supposons que vous avez une table utilisant une contrainte de clé étrangère définie pour la suppression en cascade et que les statistiques de la colonne clé étrangère ne couvrent pas l’intégralité des valeurs clés de la table (par exemple, étant donné que les statistiques n’ont pas été mises à jour suite aux modifications apportées à la table pour la distribution des données). Dans ce scénario, lorsque vous tentez de supprimer une ligne correspondant à une valeur de clé non représentée dans l’histogramme statistique et que l’optimiseur de requête utilise l’estimation de cardinalité par défaut, l’opération de suppression est plus lente que prévu. Vous remarquerez peut-être également qu’une opération de numérisation d’index est utilisée pour rechercher les lignes correspondantes dans la table de référencement.
Statut
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Résolution
Ce problème a été résolu dans les mises à jour cumulatives suivantes pour SQL Server :
Remarque : Ce correctif n’est activé que lorsque vous activez les correctifs rapides de l’optimiseur (via l’option de configuration étendue à la base de données, l’indicateur de requête ou l’indicateur de suivi 4199).
À propos des mises à jour cumulatives SQL Server :
Chaque nouvelle mise à jour cumulative SQL Server contient tous les correctifs et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Solution de contournement
Pour contourner ce problème, appliquez l'une des méthodes suivantes :
-
Utilisez l’estimation de cardinalité héritée. Pour plus d’informations, voir Estimation de la cardinalité (SQL Server).
-
Supprimez la suppression en cascade de la définition de clé étrangère et effectuez l’opération de suppression en utilisant la jointion entre les tables parent et enfant pour effectuer l’équivalent d’une suppression en cascade.
-
Mettez à jour les statistiques de la table parente avec FULLSCAN avant de supprimer des données.
Références
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.