症状

Microsoft SQL Server 中的某些查询执行计划包括在表或索引扫描/范围操作的顶部计算筛选器的模式。 筛选器谓词的某些部分可能匹配索引键,因此可能用于运行索引查找或范围扫描。 谓词的其余部分称为 "残留",并且必须通过扫描或区域操作对每个行输出进行计算。 这将对应于筛选器运算符。 但是,为了提高性能,SQL Server 可以将筛选器推送到 table access 运算符本身。 虽然此方法提高了整体性能,但在某些情况下(例如,在与参数敏感性相关的基数估计不准确的情况下),下面的 "扫描" 筛选器可能会处理比预期更大的行数。 使用实际执行计划时,在查询性能故障排除过程中可能会隐藏此事实,因为返回的实际行数将对应于应用驻留谓语之后的行数,而不是从表或索引中扫描的实际行数。

解决方案

为了改进 "症状" 部分中所述的方案的诊断,SQL Server 2012 Service Pack 3 (SP3)和 SQL Server 2014 SP2 引入了新的显示计划 XML 属性, 实际行已读。 此属性提供有关在应用驻留谓语之前已由操作员读取的行数的信息。此功能在 SQL Server 的以下 Service Pack 中引入了 fist。

有关 SQL Server 2012 Service Pack 3 (SP3)的详细信息,请参阅 在 SQL server 2012 Service Pack 3 中修复的 bug

Sql server的 Service pack 2 for sql server 2014Sql Server 2016 Service PACK 1 (SP1) 关于 SQL Server 的 Service packService Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 我们建议为该服务包应用最新的服务包和最新的累积更新。 在安装最新的 Service Pack 之前,不需要安装以前的 Service Pack。 使用以下文章中的表1查找有关最新服务包和最新累积更新的详细信息。如何确定 SQL Server 及其组件的版本、版本和更新级别

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×