You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2019后表变量基数估算规则变更咨询

SQL Server表变量统计与基数估算的变更说明

核心变更时间线

SQL Server 2019(兼容级别150+)

  • 引入表变量延迟编译功能,默认启用。优化器会延迟查询编译时机,直到第一次执行时获取表变量的实际行数,以此生成更精准的执行计划,替代了此前固定1行的基数估算逻辑。
  • 若无法触发延迟编译(例如在IF...ELSE等流程控制块内查询表变量、表变量刚完成DDL操作就立即查询等场景),优化器会采用启发式估算规则:基数估算值为表变量实际总行数的平方根(如你测试的4999行对应~70.7行)。

SQL Server 2022及后续版本(兼容级别160+)

  • 新增表变量自动统计创建机制:当表变量的数据量达到内部阈值时,优化器会自动为其创建临时统计信息,此时基数估算将基于实际统计数据,不再依赖平方根规则。
  • 支持手动为表变量创建统计信息,执行CREATE STATISTICS [统计名] ON @表变量名 ([列名])语句后,优化器会直接使用这些统计数据进行基数估算。

平方根估算规则的适用范围

该规则并非始终适用,仅作为无统计信息且无法触发延迟编译时的 fallback 策略:

  • 适用场景:
    • 数据库兼容级别低于160,且未触发延迟编译;
    • 兼容级别160+,但表变量数据量未达自动统计阈值、未手动创建统计,且无法触发延迟编译。
  • 不适用场景(此时会使用更精准的估算逻辑):
    • 触发表变量延迟编译;
    • 表变量存在自动或手动创建的统计信息;
    • 查询使用OPTION (RECOMPILE)提示,强制重新编译时会获取表变量实际行数进行估算。

内容的提问来源于stack exchange,提问作者KnowledgeSeeeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:48:11