今天领导安排一个任务就是统计数据库中各个表的记录数目,我在数据库中数了一下一共有70多张表,当时感觉工作量还是挺大的。但通过查询资料使用了SQL Server内部的系统表,就轻松完成了任务,现记录下来以备他用。 用到的系统表为【sysobjects】、【sysindexes】,通过两张表的内连接查询即可统计出各用户表的记录数目。SQL如下:
with TableRecord(TableName,RecordCount) as
(
select o.name, i.rows
from sysobjects o, sysindexes i
where o.id = i.id
and o.Xtype = 'U'
and i.indid < 2
)
select * from TableRecord order by tablename
其中,’U‘代表用户表。
1、关于系统表【sysobjects】字段相关说明
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 对象名。 |
Id | int | 对象标识号。 |
xtype | char(2) | 对象类型。可以是下列对象类型中的一种: C = CHECK 约束 |
uid | smallint | 所有者对象的用户 ID。 |
info | smallint | 保留。仅限内部 |