KB3107397 : amélioration de la diagnostics pour les plans d’exécution de requêtes qui impliquent un pushdown de prédicat résiduel dans SQL Server

S’applique à
SQL Server 2012 Enterprise SQL Server 2012 Web SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) 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)

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.

Comment déterminer la version, l’édition et le niveau de mise à jour de SQL Server et de ses composants