MS SQL查询所有表行数,获取所有数据库名,表名,字段名
1.获取所有数据库名
--SELECT Name FROM Master..SysDatabases ORDER BY Name --
2.获取所有表名:
--SELECT Name NAMEtemp,* FROM TEST..SysObjects Where XType='U' ORDER BY Name --表名
----XType='U':表示所有用户表;
----XType='S':表示所有系统表;
3.获取所有字段名:
SELECT Name FROM SysColumns WHERE id=Object_Id('TableName')
4.查询所有表行数
----SELECT * FROM TEST..sysindexes --表明细
select a.name, b.rows --查询所有表行数/TEST为库名称
from TEST..sysobjects a
inner join TEST..sysindexes b on a.id = b.id
where a.type = 'u'
and b.indid in (0, 1)
order by a.name
【 declare @N int set @N=10000
--通过查询索引表的聚集索引查询 (indid=1,这种是体现数据是以聚集索引方式存储体现的查询)
select object_name(id),rowcnt from sysindexes where rowcnt>=@N and indid=1 and objectproperty(id,'isusertable')=1
--通过查询索引表的无聚集索引查询 (indid=0,这种是体现数据是以数据堆方式存储体现的查询,无聚集索引的表)
select object_name(id),rowcnt from sysindexes where rowcnt>=@N and indid=0 and objectproperty(id,'isusertable')=1
有人问indid是什么意思?
select object_name(id),rowcnt from sysindexes where rowcnt>=@N and indid<=1 and objectproperty(id,'isusertable')=1 即可),非聚集索引则不一定
必须。
indid=1 查询的就是根据聚集索引键值来查询sysindexs,也就是说不存在聚集索引的表,通过上面的查询是查不出来的。
而indid>1(如indid=2、indid=3等) 则代表查询的是根据非聚集索引序号,但没有聚集索引的表还是大量存在的(这不比
当然此查询可能有误差,在索引碎片的产生和清理过程确实会存在,只要索引定期维护、重建,那么误差应该不大,甚至不存在误差了
--objectproperty:
http://technet.microsoft.com/zh-cn/library/ms176105.aspx
sysindexes详细内容
http://technet.microsoft.com/zh-cn/library/ms190283.aspx
数据库中的每个索引和表在表中各占一行。该表存储在每个数据库中。
列名 | 数据类型 | 描述 |
---|---|---|
id | int | 表 ID(如果 indid = 0 或 255)。否则为索引所属表的 ID。 |
status | int | 内部系统状态信息。 |
first | binary(6) | 指向第一页或根页的指针。 |
indid | smallint |
索引 ID: 1 = 聚集索引 |
root | binary(6) | 如果 indid >= 1 和 < 255, root 是指向根页的指针。如果 indid = 0 或 indid = 255, root 是指向最后一页的指针。 |
minlen | smallint | 最小行大小。 |
keycnt | smallint | 键的数目。 |
groupid | smallint | 在其上创建对象的文件组 ID。 |
dpages | int | 如果 indid = 0 或 indid = 1, dpages 是已用数据页的计数。如果 indid = 255,其设置为 0。否则是已用索引页的计数。 |
reserved | int | 如果 indid = 0 或 indid = 1, reserved 是分配给所有索引和表数据的页计数。如果 indid = 255, reserved 是分配给 text 或 image 数据的页计数。否则是分配给索引的页计数。 |
used | int | 如果 indid = 0 或 indid = 1, used 是用于所有索引和表数据的总页数。如果 indid = 255, used 是用于 text 或 image 数据的页计数。否则是用于索引的页计数。 |
rowcnt | bigint | 基于 indid = 0 和 indid = 1 的数据级行计数。如果 indid = 255, rowcnt 设置为 0。 |
rowmodctr | int | 对自上次更新表的统计后插入、删除或更新行的总数进行计数。 |
xmaxlen | smallint | 最大行大小。 |
maxirow | smallint | 最大非叶索引行大小。 |
OrigFillFactor | tinyint | 创建索引时使用的起始填充因子值。不保留该值;然而,如果需要重新创建索引但记不住当初使用的填充因子,则该值可能很有帮助。 |
reserved1 | tinyint | 保留。 |
reserved2 | int | 保留。 |
FirstIAM | binary(6) | 保留。 |
impid | smallint | 保留。索引实现标志。 |
lockflags | smallint | 用于约束经过考虑的索引锁粒度。例如,对于本质上是只读的查找表,可以将其设置为仅进行表级锁定以使锁定成本减到最小。 |
pgmodctr | int | 保留。 |
keys | varbinary(816) | 组成索引键的列 ID 列表。 |
name | sysname | 表名(如果 indid = 0 或 255)。否则为索引的名称。 |
statblob | image | 统计 BLOB。 |
maxlen | int | 保留。 |
rows | int | 基于 indid = 0 和 indid = 1的数据级行数,该值对于 indid >1 重复。如果 indid = 255, rows 设置为 0。提供该列是为了向后兼容。 |
MS SQL查询所有表行数,获取所有数据库名,表名,字段名的更多相关文章
- SQL 从指定表筛选指定行信息 获取表行数
1.获取指定表的行数 --获取表中数据行数 --select max([列名]) from 表名 2.筛选指定表的指定行数据(数据表分页获取) http://www.cnblogs.com/morni ...
- SQL SERVER统计服务器所有的数据库(数据库文件)、表(表行数)、字段(各字段)等详细信息
原文:SQL SERVER统计服务器所有的数据库(数据库文件).表(表行数).字段(各字段)等详细信息 USE STAT GO SET NOCOUNT ON IF EXISTS(SELECT 1 FR ...
- SQL Server查看所有表大小、表行数和占用空间信息
一.查看表名和对应的数据行数select a.name as '表名',b.rows as '表数据行数'from sysobjects a inner join sysindexes bon a. ...
- 查询执行成本高(查询访问表数据行数多)而导致实例 CPU 使用率高是 MySQL 非常常见的问题
MySQL CPU 使用率高的原因和解决方法_产品性能_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/51587.html ...
- Oracle 查询结果集行数分析
本人曾去某金融软件公司面试,交流中面试官问的一个问题是:"如果有 A.B 两张表,A 表中有 2 条数据,B 表中有 200 条数据,请问 SELECT * FROM A,B 能查出多少条数 ...
- 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表 ...
- [SQL]某数据库中查出包含 字段名 的所有表名
--利用SQL语句来查询字段所在的表 --从某数据库中查出包含 字段名 字段的所有表名 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE ...
- php mysql_affected_rows获取sql执行影响的行数
php mysql_affected_rows函数用于获取执行某一SQL语句(如INSERT,UPDATE 或 DELETE )所影响的行数,本文章向大家介绍php mysql_affected_ro ...
- 一种快速统计SQL Server每个表行数的方法
转载自:http://www.cnblogs.com/kenyang/archive/2013/04/09/3011447.html 我们都知道用聚合函数count()可以统计表的行数.如果需要统计数 ...
随机推荐
- modbus字符串的结束符介绍
Modbus协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它,不同厂商生产的控制设备可以连成工业 ...
- [Angular] Show a Loading Indicator for Lazy Routes in Angular
We can easily code split and lazy load a route in Angular. However when the user then clicks that la ...
- LeetCode 246. Strobogrammatic Number
原题链接在这里:https://leetcode.com/problems/strobogrammatic-number/ 题目: A strobogrammatic number is a numb ...
- 001_matlab_变量打印
MATLAB输出变量方法很多,主要包括以下几类.(1)语句后面不加分号“;”,这是直接输出数值的比较简单的方法.(2)disp(a)直接在命令窗口显示a变量,这种方法输出和第一种差不多.(3)fpri ...
- How to Set Up a NFS Server on Debian 10 Buster
How to Set Up a NFS Server on Debian 10 Buster Nick Congleton Debian 24 May 2019 Contents 1. Softw ...
- MongoDB CRUD 操作
crud是指在做计算处理时的增加(Create).读取查询(Retrieve).更新(Update)和删除(Delete)几个单词的首字母简写.crud主要被用在描述软件系统中数据库或者持久层的基本操 ...
- 三十八. 分库分表概述 配置mycat
1.搭建mycat 分片服务器 数据库主机 192.168.4.55 使用db1库存储数据 数据库主机 192.168.4.56 使用db2库存储数据 主机 192.168.4.54 运行myca ...
- /etc/inittab
# inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON ...
- codevs 4244 平衡树练习
二次联通门 : codevs 4244 平衡树练习 Splay实测指针占用空间大约是数组的3倍, 且时间上也慢了差不多1s 数组版评测记录如下 指针版评测记录如下 以上数据仅限这一个题, 对于 ...
- python-ros No module named PyKDL
sudo apt-get install ros-indigo-kdl-parser-py http://debian.2.n7.nabble.com/Bug-913803-python3-pykdl ...