MSSQL数据库统计所有表的记录数
今天需要筛选出来库中行数不为零的表,于是动手写下了如下存储过程。
CREATE PROCEDURE TableCount AS
BEGIN
SET NOCOUNT ON
DECLARE @t1 AS TABLE(id INT IDENTITY,NAME NVARCHAR(50),RowsCount INT)
DECLARE @indexid AS INT
DECLARE @maxid AS INT
DECLARE @count AS INT
DECLARE @name AS VARCHAR(50)
DECLARE @sqlstr AS NVARCHAR(500)
INSERT INTO @t1 SELECT NAME,0 FROM dbo.sysobjects WHERE type='U'
SELECT @maxid=MAX(id),@indexid=1 FROM @t1
WHILE(@maxid>=@indexid)
BEGIN
SELECT @name = name FROM @t1 WHERE id=@indexid
SET @sqlstr = 'SELECT @Count1=COUNT(0) FROM '+@name
exec sp_executesql @sqlstr,N'@Count1 int output',@count output
UPDATE @t1 SET RowsCount=@count WHERE id=@indexid
SET @indexid=@indexid+1
END
SET NOCOUNT OFF
SELECT * FROM @t1 WHERE RowsCount>0
END
GO
EXEC TableCount
GO
这样大功告成!
事后上网查阅相关资料发现有更简便的方法,贴在这里供大家参考吧。
CREATE TABLE #temp (Name VARCHAR (255), RowsCount INT)
EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(0) FROM ?'
SELECT Name, RowsCount FROM #temp WHERE RowsCount>0 ORDER BY Name
DROP TABLE #temp
注: 系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历每个表和遍历每个数据库。
总结,遇到问题还是先查一下有没有现成的方法能省不少的时间的,而且还可以学习到新的知识。
@空紫竹 提供的更快捷的方法: (2015-03-27编辑)
select rows,OBJECT_NAME(id) as TABLENAME
from sysindexes
where indid=0
MSSQL数据库统计所有表的记录数的更多相关文章
- Oracle查询数据库中所有表的记录数
1.Oracle查询数据库中所有表的记录数,但是有可能不准建议用第二种方式进行查询 select t.table_name,t.num_rows from user_tables t 2.创建orac ...
- SQLSERVER中统计所有表的记录数
SQLSERVER中统计所有表的记录数 利用系统索引表sysindexes中索引ID indid<1的行中的rows列存有该表的行数这一特点. 方法是利用隐藏未公开的系统存储过程sp_MS ...
- SQLSERVER 数据库查看各表的记录数
select a.name as 表名,max(b.rows) as 记录条数 from sysobjects a ,sysindexes b where a. ...
- mysql 查看数据库中所有表的记录数
use information_schema; SELECT DISTINCT t.table_name, t.engine '表引擎', t.table_rowsFROM TABLES tWHERE ...
- 36. Oracle查询数据库中所有表的记录数
select t.table_name,t.num_rows from user_tables t
- 4. mysql 查看数据库中所有表的记录数
use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = 'testdb' orde ...
- mysql统计指定数据库的各表的条数
mysql统计指定数据库的各表的条数 SELECT table_schema,table_name,table_rows,CREATE_TIME FROM TABLES WHERE TABLE_SCH ...
- MySQL单表最大记录数不能超过多少?
MySQL单表最大记录数不能超过多少? 很多人困惑这个问题.其实,MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身. 从性能角度来讲,MySQL单表数据不要 ...
- 统计MSSQL数据库中所有表记录的数量
SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS aINNER JOIN sysindexes AS b ON a.id = b.id ...
随机推荐
- Day4_代码重用与函数
知识点速记: 重用代码的方法:脚本包含require().include(); 全局配置文件php.ini(auto_prepend_file/auto_append_file); 目录配置文件.ht ...
- 用正则匹配一串字符串中的ip地址
IP地址有4段组成,每一段数字的范围为0-255,在一段文本中提取ip地址可以这样 $src = 'src = alsdlk ks sdf2.3.3.4 234.193.1.120.1232 d.23 ...
- cmd命令 拷贝某文件夹及其子文件夹文件到其它文件夹
@ECHO OFF cd/d %H:\FileLoc\CNET&cd.. ::echo 拷贝"%H:\FileLoc\CNET"中文件到"H:\FileLocTe ...
- C# 轮循回调
class Program { static void Main(string[] args) { Func<int> func = new Func<int>(GetInt) ...
- java中两个对象间的属性值复制,比较,转为map方法实现
package com.franson.study.util; import java.lang.reflect.InvocationTargetException; import java.lang ...
- [vc]如何对radio按钮分组
如何使用多组? 多组和一组是一样的使用,只要搞清楚哪个是哪一组的就行了.再为对话框添加Radio3和Radio4.很简单,先为这些RadioButton排个顺序,就是排列他们的TABORDER.在对话 ...
- 彻底解决 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
最近我的VS2010不知道怎么回事,平时用的好好的,近期竟然出现了所谓的 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 头痛万分,查了各种资料一 ...
- Mybatis使用存储过程(MySql)
推荐文章:http://www.iteye.com/topic/1132302 http://yhjhappy234.blog.163.com/blog/static/3163283220124557 ...
- 优秀的 Android Studio 插件
转自:http://www.codeceo.com/article/8-android-studio-plugins.html Android Studio是目前Google官方设计的用于原生Andr ...
- 学习笔记--DI(依赖注入) 、Ioc(控制反转)
一.概述 日期:2013-12-12 今天主要研究的是依赖注入(Dependency Injection),感觉收获很多,特别在思想上. 本人技术有限,有兴趣的朋友可以看一下文章: ①http://b ...