应用对象
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 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - 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) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

症状

当你在 Microsoft SQL Server 2014 或2016中查询视图时,如果将其与 SQL Server 2008 R2 中的执行进行比较,可能会花费较长的时间来完成。 

当执行使用 UNION ALL 和 row 目标(如 TOP N 子句、FAST N 或 EXISTS 谓语)的查询时,如果将其与 SQL Server 2008 R2 进行比较,你可能会注意到 SQL Server 2014 或更高版本中的查询运行速度较慢。

原因

在 SQL Server 2008 R2 中,如果有行目标,查询优化器将更改 "UNION ALL" 下不同部分的顺序,以便最便宜的部分最先开始。 这使查询能够在成本较低的部分生成所需的行数后继续执行,而无需继续执行更昂贵的部分。 此类重新排序在 SQL Server 的更高版本中不会发生。

解决方案

在 SQL Server 的以下累积更新中修复了此问题:

       SQL Server 2016 RTM 的累积更新7

       SQL Server 2016 SP1 的累积更新4

       SQL Server 2014 SP2 的累积更新6

注意  必须为此问题启用查询 Optimiser。 

有关查询优化器和跟踪标志的详细信息,请参阅以下链接:

SQL Server 查询优化程序修复程序的 TF 4199 服务模型

DBCC 控制台命令和跟踪标记

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

SQL Server 2016 的最新累计更新

SQL Server 2014 的最新累积更新

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新的 术语

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。