SQL Server使用sp_spaceused查看表记录存在不准确的情况
在之前写过一篇博客"关系数据库如何快速查询表的记录数",里面介绍了使用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.partitions与sp_spaceused获取的表记录函数是否准确?
答案:对象目录视图sys.partitions与sp_spaceused获取的表记录数是准确的。
正确答案:对象目录视图sys.partitions与sp_spaceused获取的表记录数是大部分是准确的。但是也存在记录数不准确的情况。只是目前不清楚在什么场景下,会出现不准确的情况。
SQL Server使用sp_spaceused查看表记录存在不准确的情况的更多相关文章
- SQL Server 用SSMS查看依赖关系有时候不准确,改用代码查
SQL Server 用SSMS查看依赖关系有时候不准确,明明某个sp中有用到表tohen,查看表tohen的依赖关系的时候,却看不到这个sp 用代码查看方式如下: --依赖于表tohen的对象 SE ...
- 查看SQL Server被锁的表以及如何解锁
锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCK ...
- 查看SQL Server服务运行帐户和SQL Server的所有注册表项
查看SQL Server服务运行帐户和SQL Server的所有注册表项 SELECT * FROM sys.dm_server_registry SELECT * FROM sys.dm_serve ...
- [转]查看SQL Server被锁的表以及如何解锁
本文转自:https://www.cnblogs.com/shy1766IT/p/6225694.html 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOC ...
- 查看SQL Server中的锁表及解锁
有时候系统很慢,有可能是SQL Server数据库中某些表被锁定 --查看被锁表(需查多几次,有些临时锁很快会自动解锁): SELECT request_session_id AS spid, OBJ ...
- 查看SQL Server被锁的表以及如何解锁【转】
锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLO ...
- Sql Server系列:数据表操作
表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...
- 清空SQL Server数据库中所有表数据的方法(转)
清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...
- MS SQL SERVER 中的系统表
MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. 2 syscomments 包含每 ...
随机推荐
- PAT1028:List Sorting
1028. List Sorting (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Excel ca ...
- Render
render 渲染元素 元素是React应用程序的最小构建块 "根"DOM节点,它内部的所有内容都将由React DOM进行管理 仅使用React构建的App程序通常具有单个Dom ...
- GMT与Etc/GMT地区信息的时区转换
GMT 地区信息的时区 在将来的版本中可能不再支持以下左面一列中的地区信息的时区.可能从 /usr/share/lib/zoneinfo 删除这些文件.左列中的地区信息的时区用右列中对等的时区来替换. ...
- U型理论
- Project facet Java version 1.8 not supported JDK版本不对无法启动项目解决办法
https://jingyan.baidu.com/article/6c67b1d69a59a02787bb1e30.html
- Reading Code Is Hard
注: 以下内容引自: https://blogs.msdn.microsoft.com/ericlippert/2004/06/14/reading-code-is-hard/ Reading Cod ...
- 【Troywar love Maths】——莫比乌斯反演
2816. Troywar loves Maths ★★☆ 输入文件:Troy_1.in 输出文件:Troy_1.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述 ...
- bzoj 4556 字符串
后缀数组,暴力硬跑 贼快 #include<cstdio> #include<cstring> #include<iostream> #include<alg ...
- poj 3243 扩展BSGS
每次把gcd(a,c)提到前面,直到a,c互质,然后就是普通BSGS了 #include<cstdio> #include<cstring> #include<iostr ...
- Python-常用 Linux 命令的基本使用
常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...