症状
假设已安装 Microsoft SQL Server 2017 或 2019,并且它使用默认的基数估计 (CE) 运行。 执行对列 Col1 有筛选谓词的查询。 查询谓词具有内部函数 UPPER、LOWER 或 RTRIM。 col1 具有可供优化器使用的统计信息。 在此方案中,可能会观察到基数估计不准确,并且 SQL Server 使用的计划效率低下。 下面是一些具有谓词的查询:
SELECT person_id FROM Person WHERE (email LIKE UPPER (N'@live.com%') )
SELECT person_id FROM Person WHERE (email = UPPER (N'msft@live.com') )
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
解决方法
此问题已在 SQL Server 的以下累积更新中修复:
关于 SQL Server 的累积更新:
SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
备注 此修复需要以下操作之一生效:
- QUERY_OPTIMIZER_HOTFIXES数据库 范围的配置 设置为开
- 使用 ENABLE_QUERY_OPTIMIZER_HOTFIXES 使用提示
- 启用 跟踪标志 4199
参考资料
了解 Microsoft 用于描述软件更新的术语。