SQL Server 查询所有表数据量

1.查询当前数据库中所有用户表的数据量(即每个表的记录数)

复制代码
SELECT  a.name ,  b.rows  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

复制代码
SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts
FROM 
    sys.tables t
INNER JOIN      
    sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN      
    sys.partitions p ON t.object_id = p.object_id
WHERE 
    p.index_id IN (0, 1)  -- 0 = heap table, 1 = clustered index
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    p.rows DESC;

说明:

sys.tables:获取数据库中所有用户表。

sys.partitions:每个表(或分区)在物理存储层面的分区信息,包含记录数(rows)。

index_id IN (0, 1):过滤掉非主数据行的分区(如非聚集索引的副本)。

2.在1的基础上增加显示数据库名

复制代码
SELECT 
    DB_NAME() AS DatabaseName,
    t.NAME AS TableName,
    s.Name AS SchemaName,
    SUM(p.rows) AS RowCounts
FROM 
    sys.tables t
INNER JOIN      
    sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN      
    sys.partitions p ON t.object_id = p.object_id
WHERE 
    p.index_id IN (0, 1)
GROUP BY 
    t.Name, s.Name
ORDER BY 
    RowCounts DESC;

3.跨所有数据库查询每个数据库中每张表的数据量(行数)

需要跨多个数据库查,可以使用 sp_MSforeachdb 或手动遍历数据库执行2中语句。

跨所有数据库查询每个数据库中每张表的数据量(行数),使用 sp_MSforeachdb 系统存储过程完成:

复制代码
EXEC sp_MSforeachdb N'
USE [?];

IF DB_ID() NOT IN (1, 2, 3, 4)  -- 排除系统数据库(master, tempdb, model, msdb)
BEGIN
    PRINT ''Database: [?]'';
    SELECT 
        DB_NAME() AS DatabaseName,
        s.name AS SchemaName,
        t.name AS TableName,
        SUM(p.rows) AS RowCounts
    FROM 
        sys.tables t
    INNER JOIN 
        sys.schemas s ON t.schema_id = s.schema_id
    INNER JOIN 
        sys.partitions p ON t.object_id = p.object_id
    WHERE 
        p.index_id IN (0, 1)
    GROUP BY 
        s.name, t.name
    ORDER BY 
        RowCounts DESC;
END
';

说明:

sp_MSforeachdb:遍历所有数据库。

USE ?:在遍历时切换数据库上下文。

IF DB_ID() NOT IN (...):排除系统数据库。

每个数据库都会输出一个标题,然后列出其所有表及记录数。
注意事项:

该语句需以 sa 或具有跨库权限的账户执行。

sp_MSforeachdb 是未文档化的存储过程,虽然广泛使用但微软不推荐用于关键任务。如果需要更稳健的版本可考虑自己实现游标版本。

相关推荐
李白客27 分钟前
向量数据库怎么选:RAG 项目最该比较的 8 个维度(深度拆解)
数据库·aigc
cspttty1 小时前
需求预测校招入门:SQL、Excel、统计模型和业务指标怎么学
大数据·数据库
2501_933670791 小时前
面向物流数据分析校招:SQL、Excel、BI、WMS/TMS该怎么准备
数据库
Code_流苏1 小时前
AI 知识库和数据库有什么区别?从“查订单”到“问规则”讲清楚
数据库·ai·agent·知识库
YangYang9YangYan1 小时前
财务 BP 校招面试案例整理|业务场景题 + 数据案例,2027 届求职
大数据·数据库
隔窗听雨眠1 小时前
KingbaseES性能优化实战指南:从操作系统调优到SQL等价改写的完整方法论
数据库·kingbasees
NineData2 小时前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
十二同学啊11 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技12 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐15 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序