Symptômes
Supposons que vous disposez de Microsoft SQL Server 2017 ou 2019 installé et qu’il s’exécute avec l’estimation de cardinalité (CE) par défaut. Vous exécutez une requête qui a un prédicat de filtre sur la colonne Col1. Les prédicats de requête ont intrinsèquement UPPER, LOWER ou RTRIM. Col1 contient des statistiques à utiliser par l’optimiseur. Dans ce scénario, vous pouvez observer des estimations de cardinalité imprécises et que SQL Server utilise un plan inefficace. Voici quelques requêtes qui ont des prédicats :
SÉLECTIONNER person_id FROM Person WHERE (E-mail LIKE UPPER(N'@live.com %'))
SELECT person_id FROM Person WHERE (email = UPPER(N'msft@live.com'))
É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ésolution
Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :
À 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 2019
- Dernière mise à jour cumulative pour SQL Server 2017
Remarque Ce correctif nécessite l’une des opérations suivantes pour prendre effet :
- QUERY_OPTIMIZER_HOTFIXES configuration à l’échelle de la base de données définie sur ACTIVÉ
- Utilisez le ENABLE_QUERY_OPTIMIZER_HOTFIXES UTILISER L’ASTUCE
- Activer l’indicateur de trace 4199
Références
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.