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 d’analyse/plage d’index ou d’index. Certaines parties du prédicat de filtre peuvent correspondre à une clé d’index et peuvent donc être utilisées pour exécuter une recherche d’index ou une analyse de plage. Les parties restantes du prédicat sont dites « résiduelles » et doivent être évaluées pour chaque sortie de ligne par l’opération de balayage ou de plage. Cela correspondrait à un opérateur de filtre. Toutefois, pour améliorer les performances, SQL Server peut appliquer ce filtre à l’opérateur d’accès à la table lui-même.
Bien que cette approche améliore les performances globales, dans certaines conditions (par exemple, dans le cas d’une estimation de cardinalité inexacte liée à la sensibilité des paramètres), le filtre de balayage ci-dessous peut traiter un plus grand nombre de lignes que prévu. Ce fait peut être masqué lors de la résolution des problèmes de performances de requête lorsque vous utilisez un plan d’exécution réel, car le nombre réel de lignes renvoyées correspond 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
Afin d’améliorer les diagnostics du 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 XML de plan de spectacle, Actual Rows Read. 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 pour la première fois dans les Service Packs pour SQL Server suivants.
Pour plus d’informations sur SQL Server 2012 Service Pack 3 (SP3), consultez la section sur les bogues corrigés 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 Server
Les Service Packs sont cumulatifs. Chaque nouvelle version contient tous les correctifs fournis dans les Service Packs précédents et tous les nouveaux correctifs. Il est recommandé d’appliquer le dernier Service Pack et la dernière mise à jour cumulative pour 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. Consultez le tableau 1 de l’article suivant pour trouver plus d’informations sur le dernier Service Pack et la dernière mise à jour cumulative.