db2怎么列出当前数据库下所有表占用空间的大小

syscat.tables 中的所有条目的npage 属性都是-1
应该不是这个吧,
该在哪看呢

ADMINTABINFO administrative view and ADMIN_GET_TAB_INFO table function - Retrieve size and state information for tables

Example 1: Retrieve size and state information for all tables

SELECT * FROM SYSIBMADM.ADMINTABINFO

Example 2: Retrieve size and state information for the table DBUSER1.EMPLOYEE.

SELECT * FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('DBUSER1', 'EMPLOYEE'))
AS T
以上参考 http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0022024.htm

DATA_OBJECT_L_SIZE DATA_OBJECT_P_SIZE这两个字段值为你需要的信息。
第一个示例查询时可以带上模式名或者表名来去除系统表的信息
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-26

查询出当前用户的表所占用的空间大小,并按大小进行降序排列:  

Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name order by Sum(bytes)/1024/1024 desc

查询出系统表空间的大小,并按大小进行降序排列(需要SYSDBA的权限):  

Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name order by Sum(bytes)/1024/1024 desc

 查看某个Table的大小可以在控制中心中用图形界面查看。

SQL Server中:

执行统计并查看指定表名的表大小:

exec sp_spaceused '表名', 

true;