查询数据库中所有表的数据数量的方法
来源:互联网 发布:数控程序仿真软件 编辑:程序博客网 时间:2024/05/17 23:39
要查询一个表的数据数量,相信大家很快就想到了select count(1) from table1,但如果我们要查询数据库中所有表的的数据数量要怎么查呢?方法比较多,下面介绍两种本人常用的方法:
一,利用sp_spaceused存储过程,sp_spaceused一次只能查询一个表的数据情况,所以使用sp_spaceused还得结合游标,不是很好的解决方法,大家可以参考第二种方法:
利用sp_spaceused的方法如下:
简单介绍一下存储过程sp_spaceused作用:显示行数、保留的磁盘空间以及当前数据库中的表、索引视图或 SQL Server 2005 Service Broker 队列所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。
如果我们这样执行:sp_spaceused 表名
它会返回六列结果,截图如下:
name:表名
rows:该表的数据行数
reserved:由数据库中对象分配的空间总量
data:数据使用的空间总量
index_size:索引使用的空间总量
unused:保留但尚未使用的空间总量
其中rows就是我们要的结果列。
二,利用sys.dm_db_partition_stats,Sql命令如下:
sys.dm_db_partition_stats它返回当前数据库中每个分区的页和行计数信息,在上面的sql中,三个关键列的意思如下:
object_id:表或者索引视图的ID,所以可以用它与sys.objects表的object_id相匹配。
row_count:该表或索引视图中数据的数量,就是我们要查询的结果。
index_id:该表或索引视图的索引ID。 如果该表没有索引,那么会在sys.dm_db_partition_stats中存在一行index_id=0的记录,如果有一个聚集索引(而且一个表中也只能有一个聚集索引),那么在sys.dm_db_partition_stats中存在一行index_id=1的记录,而对应的index_id=0的记录没有了。如果这个表在sys.dm_db_partition_stats中存在多行index_id >1的记录,则说明这个表存在多个非聚集索引,我们这里判断index_id<=1,是假定每个表都有主键,且主键为聚集索引。配合sys.objects表的type='U',就可以查出每个用户表的数据数量了。
一,利用sp_spaceused存储过程,sp_spaceused一次只能查询一个表的数据情况,所以使用sp_spaceused还得结合游标,不是很好的解决方法,大家可以参考第二种方法:
利用sp_spaceused的方法如下:
set nocount on
create table #t1
(
name varchar(200),
rows int,
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50)
)
declare @tablename varchar(200)
declare @sql varchar(2000)
declare m_cursor cursor local for select object_name(object_id) from sys.objects where type='U'
open m_cursor
fetch next from m_cursor into @tablename
while @@fetch_status=0
begin
set @sql='insert into #t1 exec sp_spaceused '+@tablename
exec(@sql)
fetch next from m_cursor into @tablename
end
close m_cursor
deallocate m_cursor
select name,rows from #t1
drop table #t1
create table #t1
(
name varchar(200),
rows int,
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50)
)
declare @tablename varchar(200)
declare @sql varchar(2000)
declare m_cursor cursor local for select object_name(object_id) from sys.objects where type='U'
open m_cursor
fetch next from m_cursor into @tablename
while @@fetch_status=0
begin
set @sql='insert into #t1 exec sp_spaceused '+@tablename
exec(@sql)
fetch next from m_cursor into @tablename
end
close m_cursor
deallocate m_cursor
select name,rows from #t1
drop table #t1
简单介绍一下存储过程sp_spaceused作用:显示行数、保留的磁盘空间以及当前数据库中的表、索引视图或 SQL Server 2005 Service Broker 队列所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。
如果我们这样执行:sp_spaceused 表名
它会返回六列结果,截图如下:
name:表名
rows:该表的数据行数
reserved:由数据库中对象分配的空间总量
data:数据使用的空间总量
index_size:索引使用的空间总量
unused:保留但尚未使用的空间总量
其中rows就是我们要的结果列。
二,利用sys.dm_db_partition_stats,Sql命令如下:
select b.name,a.row_count from sys.dm_db_partition_stats a,
sys.objects b
where a.object_id=b.object_id
and a.index_id<=1
and b.type='U'
sys.objects b
where a.object_id=b.object_id
and a.index_id<=1
and b.type='U'
sys.dm_db_partition_stats它返回当前数据库中每个分区的页和行计数信息,在上面的sql中,三个关键列的意思如下:
object_id:表或者索引视图的ID,所以可以用它与sys.objects表的object_id相匹配。
row_count:该表或索引视图中数据的数量,就是我们要查询的结果。
index_id:该表或索引视图的索引ID。 如果该表没有索引,那么会在sys.dm_db_partition_stats中存在一行index_id=0的记录,如果有一个聚集索引(而且一个表中也只能有一个聚集索引),那么在sys.dm_db_partition_stats中存在一行index_id=1的记录,而对应的index_id=0的记录没有了。如果这个表在sys.dm_db_partition_stats中存在多行index_id >1的记录,则说明这个表存在多个非聚集索引,我们这里判断index_id<=1,是假定每个表都有主键,且主键为聚集索引。配合sys.objects表的type='U',就可以查出每个用户表的数据数量了。
sys.dm_db_partition_stats其它行的信息,大家可以查询msdn帮助文档。
http://write.blog.csdn.net/postedit
0 0
- 查询数据库中所有表的数据数量的方法
- 清空数据库中所有表数据的方法
- 清空数据库中所有表数据的简洁方法
- 清空数据库中所有表数据的方法
- SQL2008 清空数据库中所有表数据的方法
- 查询数据库中所有表的信息
- 查询数据库中所有表的语句
- 查询数据库中所有表的名称
- 查询数据库所有表并统计数量
- 查询数据库中某个字段重复的所有数据
- mysql查询数据库含有的表数量
- MySQL 查询指定数量的表数据
- 删除数据库中所有表的数据
- 数据库学习笔记 --- SQL查询数据库中所有的表
- 查询表中某个字段不重复的所有数据的常用两种方法
- 删除一个数据库中所有数据的方法
- 删除一个数据库中所有数据的方法
- sql server 查询所有数据库,一个数据库中所有表和表的所有字段
- Android常用的四种设计模式
- 物理模型 - Physical Data Model
- Android数据库SQLite操作详解及LitePal用法详解(四)
- Lua快速入门总结
- 发现App.config文件和Settings.settings.cs文件的内容有重复。
- 查询数据库中所有表的数据数量的方法
- 机器学习中的分类算法
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目
- 填加减运算符算法
- ZOJ Monthly, February 2016 - L:Parity Modulo P
- gpg Permission denied
- 语音增强算法研究系列(三):基于先验信噪比的音频降噪
- java四大特性
- github常用功能