Symptômes
La logique d’estimation de cardinalité connue sous le nom de l’estimateur de cardinalité a été repensée dans SQL Server 2014 (niveaux de compatibilité 120) et SQL Server 2016 (niveaux de compatibilité 130) pour améliorer la qualité des plans de requête. Toutefois, lorsque vous compilez une requête complexe qui contient de nombreuses jointures avec un opérateur DISTINCT ou de regroupement, la compilation risque de prendre beaucoup plus de temps que prévu.
Résolution
Cette mise à jour qui résout ce problème est incluse dans Service Pack 1 pour SQL Server 2016.Remarque Après l’installation de cette mise à jour, vous devez définir l’indicateur de suivi 4199 pour activer le correctif. Pour définir l’indicateur de suivi 4199, voir la rubrique relative aux indicateurs de trace (Transact-SQL) sur MSDN.
Chaque nouvelle build pour SQL Server 2016 contient tous les correctifs et les correctifs de sécurité inclus dans la build précédente. Nous vous recommandons d’installer la dernière version pour SQL Server 2016.
Solution de contournement
Pour contourner ce problème, appliquez l'une des méthodes suivantes :
-
Utilisez l’indicateur de suivi 9481 pour définir le modèle d’estimation de cardinalité de l’optimiseur de requête sur SQL Server 2012 ou une version antérieure.
-
Changez le niveau de compatibilité de la base de données vers SQL Server 2012 (110) ou une version antérieure.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Apprenez-en davantage sur la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.