Symptômes
Certains plans d’exécution de requête dans Microsoft SQL Server incluent un modèle d’évaluation d’un filtre au-dessus d’une opération de numérisation/plage de table ou d’index. Certaines parties du prédicat de filtre risquent de correspondre à une clé d’index et pourraient donc être utilisées pour exécuter une recherche d’index ou de plage. Les parties restantes du prédicat sont connues sous le nom de « reliquat » et doivent être évaluées pour chaque ligne de la sortie par l’opération de numérisation ou de plage. Cela correspond à un opérateur de filtre. Toutefois, pour améliorer les performances, SQL Server peut étendre ce filtre à l’opérateur d’accès à la table. Même si cette approche permet d’améliorer globalement les performances, dans certaines conditions (par exemple, dans le cas d’une estimation de cardinalité incorrecte qui est liée à la sensibilité des paramètres), le filtre d’analyse est susceptible de traiter un plus grand nombre de lignes que prévu. Ce fait peut être masqué lors de la résolution des problèmes de performance des requêtes lorsque vous utilisez un plan d’exécution réel, car le nombre réel de lignes qui est retourné correspondra au nombre de lignes après l’application du prédicat résiduel et non au nombre réel de lignes analysées à partir d’une table ou d’un index.
Résolution
Pour améliorer les diagnostics pour un scénario décrit dans la section symptômes, SQL Server 2012 Service Pack 3 (SP3) et SQL Server 2014 SP2 introduisent un nouvel attribut Showplan XML, lignes réelles lues. Cet attribut fournit des informations sur le nombre de lignes lues par l’opérateur avant l’application du prédicat résiduel. Cette fonctionnalité a été introduite dans les service packs suivants pour SQL Server.
Pour plus d’informations sur SQL Server 2012 Service Pack 3 (SP3), voir bogues résolus dans SQL server 2012 Service Pack 3.
Service Pack 2 pour SQL Server pour SQL server 2014 SQL Server 2016 Service Pack 1 (SP1) À propos des service packs pour SQL ServerLes Service Packs sont cumulatifs. Chaque nouvelle version contient tous les correctifs fournis dans les Service Packs précédents et tous les nouveaux correctifs. Nous vous recommandons d’appliquer le dernier Service Pack et la dernière mise à jour cumulative de ce Service Pack. Il n'est donc pas nécessaire d'installer la version antérieure d'un Service Pack avant d'installer la dernière version disponible. Utilisez le tableau 1 de l’article suivant pour trouver plus d’informations sur le dernier Service Pack et la dernière mise à jour cumulative.Déterminer le niveau de version, d’édition et de mise à jour de SQL Server et ses composants