我想知道 SQL Server 如何生成“自动创建统计信息”设置为“关闭”的查询计划。
我在搜索答案时偶然发现了以下链接中的以下上下文(对不起,我搜索了,但找不到更好的)。
https://www.simple-talk.com/sql/performance/execution-plan-basics/
表变量从来没有生成统计信息,所以优化器总是假设它们只有一行,而不管它们的实际大小
虽然上面只适用于表变量,但我认为SQL Server会使用相同的原理来导出表的查询计划并决定做一个小测试。
我清除了 PROC 缓存并在具有 100 万条记录的表上运行以下查询
我的测试证明我错了,SQL Server 报告缺少统计数据(如预期),但是当没有统计数据时,估计行数为 31622(我预计为 1)。查询优化器是如何在没有统计信息的情况下得出这个值的?