Applies ToSQL 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)

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.

Service Pack 2 for SQL Server for SQL Server 2014 SQL Server 2016 Service Pack 1 (SP1) About Service packs for SQL ServerService 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

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.