Symptômes
Lorsque vous interrogez une vue dans Microsoft SQL Server 2014 ou 2016, il est possible que vous deviez mettre plus de temps à s’exécuter si vous comparez celle-ci à l’exécution dans SQL Server 2008 R2.
Lorsque vous exécutez une requête qui utilise UNION ALL et un objectif de ligne (par exemple, le prédicat TOP N, FAST no ou EXISTs), vous remarquerez que la requête s’exécute plus lentement dans SQL Server 2014 ou les versions ultérieures si vous la comparez à SQL Server 2008 R2.
Cause
Dans SQL Server 2008 R2, l’optimiseur de requête change l’ordre des différents composants sous UNION ALL s’il s’agit d’un objectif de ligne, afin que la partie la plus coûteuse y aille. Cela permet à la requête d’achever l’exécution plus tôt si les parties moins onéreuses produisent le nombre de lignes requis, sans continuer à exécuter des pièces plus onéreuses. Ce réorganisation n’a pas lieu dans les versions ultérieures de SQL Server.
Résolution
Ce problème a été résolu dans la mise à jour cumulative suivante pour SQL Server :
Mise à jour cumulative 7 pour SQL Server 2016 RTM
Mise à jour cumulative 4 pour SQL Server 2016 SP1
Mise à jour cumulative 6 pour SQL Server 2014 SP2
Remarque L’optimiseur de requête doit être activé pour ce problème.
Pour plus d’informations sur les indicateurs de suivi et d’optimiseur de requête, consultez les liens suivants :
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 :
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 terminologieutilisée par Microsoft pour décrire les mises à jour logicielles.