SQL Server利用sp_spaceused如何查看表记录存在不准确的情况

 更新时间:2019年04月13日 09:22:44   作者:潇湘隐者  
这篇文章主要给大家介绍了关于SQL Server利用sp_spaceused如何查看表记录存在不准确情况的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

在之前写过一篇博客"关系数据库如何快速查询表的记录数",里面介绍了使用sp_spaceused查看表的记录数是否正确的问题,具体如下:

关于问题3:有多个索引的表,是否记录数会存在不一致的情况?
 
   答案:个人测试以及统计来看,暂时发现多个索引的情况下,sys.partitions中的rows记录数都是一致的。暂时没有发现不一致的情况,当然也不排除有特殊情况。
 
关于问题5: 分区表的情况又是怎么样?
 
   答案:分区表和普通表没有任何区别。
 
关于问题6:对象目录视图sys.partitions与sp_spaceused获取的表记录函数是否准确?
 
   答案:对象目录视图sys.partitions与sp_spaceused获取的表记录数是准确的。

但是,今天遇到一个问题,直接推翻了之前博客里面下的这个结论。如下截图所示,发现不同的索引的记录数不一样。所以问题3,应该这样回答:

    大部分情况下,sys.partitions中的rows记录数都是一致的。但是也有发现不同索引的rows不一致的情况

另外,也发现sp_spaceused 中返回的记录数跟SELECT COUNT(*) 不一致。但是从碎片,统计信息等各个方面都分析了一下,实在没有搞清楚什么原因会导致这种情况出现。在数据库找了一下,发现这样的情况非常少,但是确实也是存在的。特此记录一下

sp_spaceused 'dbo.spcecial_table';
 
SELECT partition_id, object_id, index_id,row_count 
FROM sys.dm_db_partition_stats 
WHERE object_id= OBJECT_ID('dbo.spcecial_table')
 
 
 
 
SELECT object_id, index_id, rows FROM sys.partitions
WHERE object_id= OBJECT_ID('dbo.spcecial_table')
 
 
 
SELECT object_id, index_id, rows FROM sys.partitions
WHERE object_id= OBJECT_ID('spcecial_table');
 
 
SELECT COUNT(*) FROM spcecial_table

如下截图所示,sp_spaceused 获取的记录数为8718528, 但是SELECT COUNT(*)为8735537。

 

关于问题6:对象目录视图sys.partitionssp_spaceused获取的表记录函数是否准确?

  答案:对象目录视图sys.partitionssp_spaceused获取的表记录数是准确的。

正确答案:对象目录视图sys.partitionssp_spaceused获取的表记录数是大部分是准确的。但是也存在记录数不准确的情况。只是目前不清楚在什么场景下,会出现不准确的情况。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • SQL Server误区30日谈 第7天 一个实例多个镜像和日志传送延迟

    SQL Server误区30日谈 第7天 一个实例多个镜像和日志传送延迟

    这个误区就有点老生常谈了。每一个主体服务器只允许一个镜像服务器。如果你希望存在多个主体服务器的副本,那么请使用事务日志传送,事务日志传送允许针对每一个主体存在多个辅助实例
    2013-01-01
  • 验证SQL保留字

    验证SQL保留字

    验证SQL保留字...
    2006-07-07
  • SQLServer中数据库文件的存放方式,文件和文件组

    SQLServer中数据库文件的存放方式,文件和文件组

    上次我关于索引的文章有几个园友发站内信问我如何将索引和表存储在不同的硬盘上。我觉的需要专门写一篇文章来讲述一下文件和文件组应该更容易理解
    2011-12-12
  • sql server 入门语句总结

    sql server 入门语句总结

    本文记录了一些SQL server 最基础的一些常用语句,希望可以对你有些帮助
    2013-02-02
  • 详解SQL Server数据库链接查询的方式

    详解SQL Server数据库链接查询的方式

    本文我们主要介绍了SQL Server数据库链接查询的方式,包括内连接、外连接和交叉连接等的内容,需要的朋友可以参考下
    2015-08-08
  • SQL 研究 相似的数据类型

    SQL 研究 相似的数据类型

    数据类型在精度,范围上有较大的差别。选择合适的类型可以减少table和index的大小,进而减少IO的开销,提高效率。本文介绍基本的数值类型及其之间的细小差别。
    2009-07-07
  • Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)

    Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)

    sql语句中的变量时通常我们定义的都是像char,varchar,nvarchar之类的,接下来教大家实现让变量作为一个像虚拟表一样,感性的各位可以参考下哈
    2013-03-03
  • sql server2008调试存储过程的完整步骤

    sql server2008调试存储过程的完整步骤

    这篇文章主要给大家分享介绍了关于sql server2008调试存储过程的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • SQL Server内存机制详解

    SQL Server内存机制详解

    本文详细讲解了SQL Server的内存机制,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • SQL如何实现横表与纵表相互转换

    SQL如何实现横表与纵表相互转换

    针对SQL横向表转纵向的问题,本文从实际应用出发,详细讲解了语法和操作步骤,并结合实例进行了演示和说明。文章还探讨了该方法的优缺点,提出了一些值得注意的事项,旨在帮助读者更深入地理解这一重要的数据处理技巧
    2023-04-04

最新评论