2023年1月2日星期一

Microsoft SQL Server (MSSQL)查询某数据库中所有表的记录数并排序

如何高效查询表的总记录数?

首先想到的自然是在表主键上应用COUNT函数来查询了

SELECT COUNT(1) AS ROWS FROM product简写成下面的也可以:SELECT COUNT(1) ROWS FROM product

另类方法1

充分利用系统自带的存储过程SP_SPACEUSED

EXEC SP_SPACEUSED 'PRODUCT'

另类方法2

根据国际惯例,很多表都会设计一个步长为1的自增长整型(INT)列作为表主键,该做法优劣这里不展开讨论,仅基于这一"习惯",外加一个假设:该字段连续无为断,则可以使用MAX函数了,限制较多哈

1,自增长列

2,该列连续

SELECT MAX(Id) AS TotalCount FROM Product;  --Id 为自增长列

另类方法3

充分使用系统表中的信息,优点是速度够快!缺点是数据不精确,所以要结合您自身项目的特点来判定是否适合使用该方法,代码奉上

查询单表的记录数
SELECT ROWS FROM [sysindexes] WHERE id = OBJECT_ID('product') and indid < 2
查询库中所有表的记录数并排序效果非常高,SQL语句如下:
SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = 'u') AND (b.indid IN (0, 1)) ORDER BY b.rows DESC
留下您的评论