KB3192154 – Un choix de plan de requête non optimal entraîne une baisse des performances lorsque des valeurs en dehors de la plage représentée dans les statistiques sont recherchées dans SQL Server 2016 et 2017

S’applique à
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows SQL Server 2016 Service Pack 1

Symptômes

Prenons le scénario suivant :

  • Vous utilisez une configuration d’estimation de cardinalité (CE) qui correspond au niveau de compatibilité de base de données 120 ou à un niveau ultérieur pour votre système Microsoft SQL Server 2016 et 2017.
  • Vous exécutez une requête qui contient un prédicat de recherche.
  • La requête recherche des valeurs inférieures ou égales à un nombre inférieur à la valeur minimale de RANGE_HI_KEY stockée dans l’objet statistiques. Ou bien, la requête recherche des valeurs supérieures à la valeur maximale de RANGE_HI_KEY pour les mêmes statistiques.

Dans ce scénario, l’optimiseur de requête surestime le nombre de lignes. Cela peut entraîner un choix de plan de requête non optimal et des performances médiocres.

Résolution

Le correctif de ce problème est inclus dans les mises à jour cumulatives suivantes pour SQL Server :

Mise à jour cumulative CU 38 pour SQL Server 2017

Mise à jour cumulative CU 38 pour SQL Server 2016 SP1

Mise à jour cumulative 2 pour SQL Server 2016
Remarque Après avoir installé cette mise à jour, vous devez activer l’indicateur de trace 4199 afin d’activer ce correctif. Pour activer l’indicateur de trace 4199, reportez-vous à la rubrique Indicateurs de trace (Transact-SQL) sur le site web MSDN (Microsoft Developer Network).

À propos des mises à jour cumulatives pour SQL Server

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels 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 :

Dernière mise à jour cumulative pour SQL Server 2017

Dernière mise à jour cumulative pour SQL Server 2016

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Références

Découvrez la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.