KB3201554 - 修复:SQL Server 2016 中包含许多不同运算符的查询编译时间过长

应用对象
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 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

症状

称为 CE) (基数估计器的基数估计逻辑在 2014 SQL Server (兼容性级别 120) 和 SQL Server 2016 (兼容性级别 130) 中进行了重新设计,以提高查询计划的质量。

但是,当您编译包含许多使用 DISTINCT 或 GROUP BY 运算符的联接的复杂查询时,编译所花费的时间可能比预期长得多。

解决方法

修复此问题的此更新包含在 SQL Server 2016 Service Pack 1 中。

注意 安装此更新后,必须设置跟踪标志 4199 才能启用修补程序。 要设置跟踪标志 4199,请参阅 MSDN 中的 Transact-SQL) (跟踪标志 主题。

关于 SQL Server 2016 内部版本

SQL Server 2016 的每个新内部版本都包含先前内部版本中包含的所有修补程序和所有安全修补程序。 建议安装 SQL Server 2016 的最新版本。

解决方法

若要解决此问题,请使用以下某种方法:

  • 使用跟踪标志 9481 将查询优化器基数估计模型设置为 SQL Server 2012 或更早版本。
  • 将数据库的兼容性级别更改为 SQL Server 2012 (110) 或更早版本。

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

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