SQL Server 2000 - “实际行数”到底是啥?

Posted

技术标签:

【中文标题】SQL Server 2000 - “实际行数”到底是啥?【英文标题】:SQL Server 2000 - What really is the "Actual Number of Rows"?SQL Server 2000 - “实际行数”到底是什么? 【发布时间】:2009-01-12 20:08:39 【问题描述】:

我有一个 SQL Server 2000 查询,它执行聚集索引扫描并显示大量行。对于我有 260.000 条记录的表,计划执行中显示的实际行数是...... 34.000.000。

这有意义吗?我误会了什么?

谢谢。

【问题讨论】:

【参考方案1】:

执行计划上显示的值是基于统计的估计值。普通查询如:

SELECT COUNT(*) FROM Table

100% 准确您的交易*。

这是related question。

*边缘情况可能因事务隔离级别而异。


有关统计数据的更多信息:

Updating statistics How often and how (maintenance plans++)

【讨论】:

【参考方案2】:

如果您的行数超出查询计划,您需要更新统计信息,否则查询优化器可能会选择错误的计划。此外,聚集索引扫描几乎就像表扫描......尝试修复索引,以便获得聚集索引查找或至少索引查找。

【讨论】:

【参考方案3】:

但是...如果是“实际行数”...为什么要基于统计数据?

我假设在构建查询计划时使用估计行数(并从当时的统计数据中收集),而实际行数是查询执行后添加的一些额外信息,用于用户调试和调整目的?

这不是吗?

【讨论】:

以上是关于SQL Server 2000 - “实际行数”到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

怎样把sql server2000数据库转化为sql server2000的数据库

SQL Server 2008转换成sql 2000数据库如何操作?

SQL 查询优化。估计与实际行数

将DBF数据表导入到sql server2000中的问题

“模拟”用户未传播到 SQL Server 2000

从 SQL Server 2000 迁移到 2012 不会中断