我正在使用Microsoft SQL Server。

我有一个已更新80行的表。

如果我右键单击并查看表属性,则行数表示10000,但从TableName中选择Count(id)表示10080。

我检查了统计信息,它们的行数也为10080。

为什么“属性”中的“计数”和“选择计数”之间有区别?

谢谢,
小号

最佳答案

此信息很可能来自sysindexes表(请参阅文档)和
不能保证sysindexes中的信息是最新的。这是SQL Server中的已知事实。

尝试运行DBCC UPDATEUSAGE并再次检查值。
参考:http://msdn.microsoft.com/en-us/library/ms188414.aspx


DBCC UPDATEUSAGE纠正行,
使用过的页面,保留页面,叶子页面
和每个的数据页计数
表或索引中的分区。如果
没有错误
系统表,DBCC UPDATEUSAGE
不返回任何数据。如果不正确
找到并纠正和
未使用NO_INFOMSGS,DBCC
UPDATEUSAGE返回行和
系统中正在更新的列
表。


例:

DBCC UPDATEUSAGE (0)

10-02 01:24