Symptômes
Supposer que vous exécutez une requête impliquant une jointure ou une agrégation sur une colonne couverte par une seule colonne et plusieurs colonnes statistiques (dont cette colonne n’est pas la colonne de début). Si vous utilisez Estimation de cardinalité par défaut (CE) dans SQL Server 2016, il est possible que le numéro sous-estime de lignes distinctes. Cela donne lieu à un plan d’exécution de requête sous-optimal (par exemple : la faible estimation risque de provoquer une allocation de mémoire insuffisante pour un opérateur de hachage, ce qui force la requête à déborder vers tempdb).
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 la mise à jour cumulative suivante pour SQL Server :
Remarque Pour que ce correctif prenne effet, vous devez activer les correctifs de l’optimiseur de requête avec l’indicateur de suivi (TF) 4199, ou l’option d’indicateurs de requête ou de la configuration correspondante.
À propos des mises à jour cumulatives pour SQL Server :
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et 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
Ce problème peut être résolu en ajoutant l’indice de requête suivant :
APPEL CONSEIL ('FORCE_LEGACY_CARDINALITY_ESTIMATION')
Références
Apprenez-en davantage sur la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.