症状
请考虑以下情况:
-
你有一个查询,该查询在 SQL Server 2014 或2016中的唯一 GUID 列上使用一个非等号谓词。
-
统计信息通过使用默认采样进行更新。 或者,在最后的统计信息更新后将新行插入到表中。
-
SQL Server 使用将数据库兼容模式设置为120的新基数预估器。
-
GUID 值在整个表中未均匀分布。
在此情况下,当你运行查询时,你可能会遇到性能较差,因为查询计划中的谓语的估计行数不正确。
解决方案
此问题首先在 SQL Server 的以下累积更新中修复:
Sql server 2014 的累积更新6服务包 1累积更新1(适用于 sql server 2016 )安装此累积更新包后,必须启用跟踪标记4199。 若要执行此操作,您可以添加 -T4199 启动参数。 或者,你可以对特定会话使用 dbcc traceon (4199)语句。
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
SQL Server 2014 的最新累积更新SQL Server 2016 的最新累计更新
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。