应用对象
SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2019 on Windows

症状

假设某个表使用设置为级联删除的外键约束,并且外键列的统计信息未涵盖表中键值的整个范围 (例如:因为数据分布更改到表) 后未更新统计信息。 在此方案中,尝试删除与统计信息直方图中未表示的键值对应的行,并且查询优化器使用默认基数估算时,删除操作的速度低于预期。 还可能会注意到,索引扫描操作用于查找引用表中的匹配行。

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

解决方案

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

注意: 仅在通过数据库范围的配置选项、查询提示或跟踪标志 4199 (打开优化器修补程序时,才启用此) 。

关于更新的累积SQL Server:

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

解决方法

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

  • 使用旧基数估算。 有关详细信息,请参阅基数估算 (SQL Server) 。

  • 从外键定义中删除级联删除,然后使用父表和子表之间的 JOIN 执行删除操作,以完成等效的级联删除。

  • 在删除数据之前,使用 FULLSCAN 更新父表的统计信息。

参考

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

需要更多帮助?

需要更多选项?

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