如何在Sybase ASE中通过系统表获取表行数及表大小(MB)
修改后的查询语句(含表大小字段)
直接在原查询中新增表大小计算逻辑,利用系统表systabstats的页面数结合数据库页面大小转换为MB单位,以下是完整代码:
declare @kernel_mode varchar(15) if @@trancount = 0 begin set chained off end set transaction isolation level 1 select @kernel_mode = @@kernelmode select ob.name as Table_Name, ob.type as Type, ta.rowcnt as Row_Count, -- 新增表大小计算:转换为MB并保留两位小数 round((ta.pages * @@pagesize)/1024.0/1024.0, 2) as Table_Size_MB, ob.crdate as Created_Date, ta.statmoddate as Last_Modified_Date into #t from sysobjects ob, systabstats ta where ob.type="U" and ta.id=ob.id order by ob.name if (@kernel_mode = 'process') begin exec sp_autoformat @fulltabname = #t, @selectlist = "Table_Name, Type, Row_Count, Table_Size_MB, Created_Date, Last_Modified_Date", @orderby = "order by Table_Name asc" end else begin exec sp_autoformat @fulltabname = #t, @selectlist = "Table_Name, Type, Row_Count, Table_Size_MB, Created_Date, Last_Modified_Date", @orderby = "order by Table_Name asc" end drop table #t
核心修改说明
- 新增字段
Table_Size_MB:通过ta.pages(表占用的页面数)乘以@@pagesize(当前数据库页面字节数),再转换为MB单位,用round函数保留两位小数提升可读性 - 更新两处
sp_autoformat的@selectlist参数,确保格式化输出包含新增的表大小字段
内容的提问来源于stack exchange,提问作者Nani
相关产品推荐
相关产品推荐

