Improved diagnostics for query execution plans that involve residual predicate pushdown in SQL Server

Symptoms
Some query execution plans in Microsoft SQL Server include pattern of evaluating a filter on top of a table or index scan/range operation. Some parts of the filter predicate may match an index key and may therefore be used to run an index seek or range scan. The remaining parts of the predicate are known as "residual" and must be evaluated for each row output by the scan or range operation. This would correspond to a filter operator. However, to improve performance, SQL Server can push such a filter down to the table access operator itself.

Although this approach improves performance overall, under some conditions (for example, in the case of an inaccurate cardinality estimation that is related to parameter sensitivity), the scan-below filter may be processing a larger number of rows than expected. This fact may be hidden during query performance troubleshooting when you are using an actual execution plan, because the actual number of rows that is returned will correspond to the number of rows after the residual predicate is applied and not the actual number of rows that are scanned from a table or index.
Resolution
To improve diagnostics for scenario that is described in the Symptoms section, SQL Server 2012 Service Pack 3 (SP3) and SQL Server 2014 SP2 introduce a new showplan XML attribute, Actual Rows Read. This attribute provides information about how many rows were read by the operator before the residual predicate was applied.

This functionality was fist introduced in the following Service Packs for SQL Server. 

For more information about SQL Server 2012 Service Pack 3 (SP3), see bugs that are fixed in SQL Server 2012 Service Pack 3.

About Service packs for SQL Server

Service packs are cumulative. Each new service pack contains all the fixes that are in previous service packs, together with any new fixes. Our recommendation is to apply the latest service pack and the latest cumulative update for that service pack. You do not have to install a previous service pack before you install the latest service pack. Use Table 1 in the following article for finding more information about the latest service pack and latest cumulative update.

How to determine the version, edition and update level of SQL Server and its components
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Propiedades

Id. de artículo: 3107397 - Última revisión: 11/16/2016 09:21:00 - Revisión: 3.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Enterprise Core

  • kbqfe kbsurveynew kbfix kbexpertiseadvanced KB3107397
Comentarios