可能重复:
How does SQL server work out the estimated number of rows?
我只是在查看SQL Server图形执行计划,我遇到了以下两个信息:
我想知道为什么会出现这种差异。你能解释一下他们之间的区别吗?如果你能用一些例子来解释它会很有帮助。
感谢。
答案 0 :(得分:6)
行估算基于统计数据。不准确的估计可能来自许多因素:
通常,在遇到问题之前不要担心。
我的经验,最常见的是基于统计数据中的基数。
如果您基于两个都有索引的字段进行选择,则行估计将基于相应索引中值的可能性乘以行总数。
答案 1 :(得分:2)
我不太了解SQL Server,所以这是一个有根据的猜测:关于表的统计数据与实际数据之间存在差异在表中。
数据库保存有关表的统计数据,优化程序可以使用这些数据来查找要执行的SQL的最佳(最便宜)查询计划。这些统计数据包括例如总行数和跨列数据的分布(例如,字段'gender'包含60%值'm'和40%值'f')。你可能在这里看到的是,统计数据已经过时,优化程序完成的计算因此会进入:优化器假设结果包含180行,但实际上(执行查询时)它返回2385.尝试更新统计信息(不知道SQL服务器中的确切语法),看看是否会改变数字。