SQL Server查看数据库中每张表的数据量和总数据量
查询将返回每个表的名称和表中的数据行数RowCounts并按数据量从大到小排序-- 查询数据库中每张表的行数数据量 SELECT t.name AS TableName, -- 表的名称 SUM(p.rows) AS RowCounts -- 表中所有分区的行数之和即该表的总行数 FROM sys.tables t -- 视图 sys.tables 存储数据库中的所有表 JOIN sys.indexes i ON t.object_id i.object_id -- 视图 sys.indexes 存储每个表的索引信息连接条件为表的对象 ID JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id -- 视图 sys.partitions 存储每个表和索引分区的信息连接条件为索引的对象 ID 和分区 ID WHERE t.is_ms_shipped 0 -- 排除系统表确保只查询用户表 AND i.type 1 -- 只考虑堆没有聚集索引的表和聚集索引类型 0 或 1跳过非聚集索引 GROUP BY t.name -- 按表名分组计算每张表的行数 ORDER BY RowCounts DESC; -- 按行数降序排列最先显示数据量最大的表说明sys.tables: 这个视图包含了当前数据库中所有的表的信息。它有一个object_id列唯一标识每个表。sys.indexes: 这个视图存储了与每个表相关的索引信息。每个表至少会有一个默认的聚集索引如果没有聚集索引则为堆表。这里通过i.type 1来过滤type 0代表聚集索引clustered index。type 1代表堆表没有聚集索引的表。type 1代表非聚集索引不计算在内。sys.partitions: 这个视图包含了与表的每个分区相关的数据包括每个分区的行数。每个表可能会有多个分区特别是在大表中所以需要按分区聚合行数。t.is_ms_shipped 0: 这确保查询只包含用户创建的表排除系统表。系统表的is_ms_shipped值为 1。GROUP BY t.name: 根据表的名称对数据进行分组以便能够计算每个表的行数。ORDER BY RowCounts DESC: 按照每个表的行数从大到小排序帮助我们快速识别数据量最大的表。获取总数据量如果您希望查看数据库中所有表的总数据量可以使用以下查询-- 查询数据库中所有表的总行数 SELECT Total AS TableName, -- 返回固定的字符串 Total 来标识总行数 SUM(p.rows) AS TotalRowCounts -- 汇总所有表的行数 FROM sys.tables t -- 获取所有用户表 JOIN sys.indexes i ON t.object_id i.object_id -- 连接索引视图 JOIN sys.partitions p ON i.object_id p.object_id AND i.index_id p.index_id -- 连接分区视图 WHERE t.is_ms_shipped 0 -- 排除系统表 AND i.type 1; -- 只计算堆表和聚集索引结果每张表的行数返回一个表格显示每张表的名称和对应的行数数据量。总行数单独返回一个值表示所有表的总行数。这些查询可以帮助您快速评估数据库的大小和表的分布情况。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2413142.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!