我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sybase数据库怎么找出表大小脚本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sybase数据库怎么找出表大小脚本

这篇文章主要介绍“sybase数据库怎么找出表大小脚本”,在日常操作中,相信很多人在sybase数据库怎么找出表大小脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sybase数据库怎么找出表大小脚本”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

以下SQL脚本用于找出表使用的空间大小,结果如图

sybase数据库怎么找出表大小脚本

脚本如下:



use dbname
go

set nocount on  
go


declare tab_name cursor
for select name 
from sysobjects 
where type="U"
go

open tab_name
go

begin
	
	declare @objname sysname    
	declare @empty_dpgs  int		
	
	
	create table #fmtpgcounts (
		name	char(35)
		,rowtotal	int
		,reserved	char(15)
		,data	char(15)
		,index_size	char(15)
		,unused	char(15)
	)


	fetch next from tab_name into @objname 		
	
	while @@fetch_status = 0
    begin
		--print @objname
		--exec sp_spaceused @objname
		
		
		select name = o.name,
			tabid = i.id,
			iname = i.name, 
			indid = i.indid,
			low = d.low,
			rowtotal = convert(numeric(10,0), 0),
			reserved = convert(numeric(20, 9), 0),
			data = convert(numeric(20, 9), 0),
			index_size = convert(numeric(20, 9), 0),
			unused = convert(numeric(20, 9), 0)
		into #pagecounts 
		from sysobjects o, sysindexes i, master.dbo.spt_values d
				where i.id = object_id(@objname)
					
					and o.id = i.id
					and d.number = 1
					and d.type = "E"
		
		
		update #pagecounts
			set rowtotal = row_count(db_id(), tabid)
		where indid <= 1
		
		
		update #pagecounts set
			reserved = convert(numeric(20, 9),
			    reserved_pages(db_id(), tabid, indid)),
			index_size =  convert(numeric(20, 9),
			    data_pages(db_id(), tabid, indid)),
			unused = convert(numeric(20, 9),
				 ((reserved_pages(db_id(), tabid, indid) -
				  (data_pages(db_id(), tabid, indid)))))
		where indid > 1
		
		
		update #pagecounts set
        reserved = convert(numeric(20, 9),
            reserved_pages(db_id(), tabid, indid)),
        data = convert(numeric(20, 9),
            data_pages(db_id(), tabid, indid)),
        unused = convert(numeric(20, 9),
                 ((reserved_pages(db_id(), tabid, indid) -
                  (data_pages(db_id(), tabid, indid)))))
    where indid = 0


		
		update #pagecounts set
			reserved = convert(numeric(20, 9),
			             reserved_pages(db_id(), tabid, 0)) 
			          +  convert(numeric(20, 9),
			             reserved_pages(db_id(), tabid, indid)),
			index_size = convert(numeric(20, 9),
				     data_pages(db_id(), tabid, indid)),
		        data = convert(numeric(20, 9),
				       data_pages(db_id(), tabid, 0))
		where indid = 1

		
		update #pagecounts set
			unused = convert(numeric(20, 9), 
				     reserved - data - index_size)
		where indid = 1

	    
	    if(exists(select convert(char(30),a.char_value)
    		from sysattributes t, master.dbo.sysattributes c,
    			master.dbo.sysattributes a
    		where t.object_type = "T"
    			and t.object = object_id(@objname)
    			and c.class = 0 and c.attribute = 0
    			and a.class = 0 and a.attribute = 1
    			and t.class = c.object
    			and t.class = a.object
    			and t.attribute = a.object_info1
    			and a.char_value = 'hash key factors'))
    	    begin
    				select @empty_dpgs = emptypgcnt
    					from systabstats where id = object_id(@objname)
    	    end
      else
  	    begin
  				select @empty_dpgs = 0
  	    end

	    insert into #fmtpgcounts
	    select distinct name,
	    	rowtotal = convert(int, sum(rowtotal)),
    		reserved = convert(char(15), convert(varchar(11),
    		           convert(numeric(11, 0), sum(reserved) *
    			         (low / 1024) / 1024)) + " " + "MB"),
    		data = convert(char(15), convert(varchar(11),
    		       convert(numeric(11, 0), (sum(data) - @empty_dpgs) * 
    		       (low / 1024)  / 1024)) + " " + "MB"),
    		index_size = convert(char(15), convert(varchar(11),
    			     convert(numeric(11, 0), sum(index_size) *
    			     (low / 1024) / 1024)) + " " + "MB"),
    		unused = convert(char(15), convert(varchar(11),
    		    	 convert(numeric(11, 0), (sum(unused) + @empty_dpgs) *
    			     (low / 1024) / 1024)) + " " + "MB")
	        from #pagecounts

	    drop table #pagecounts     
    
		fetch next from tab_name into @objname
    end

  select distinct
    'TableName' = convert(char(35),name) ,
	  'RowTotal' = rowtotal ,
		'Reserved' = convert(char(10), reserved),
		'Data' = convert(char(10), data),
		'IndexSize' = convert(char(10), index_size),
		'Unused' = convert(char(10), unused)
			 from #fmtpgcounts
			     -- 去掉行数为0的行
			     where rowtotal <> 0
			     order by rowtotal desc

  --exec sp_autoformat #fmtpgcounts
	drop table #fmtpgcounts   
end

go

close tab_name
go

deallocate tab_name
go

到此,关于“sybase数据库怎么找出表大小脚本”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sybase数据库怎么找出表大小脚本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql数据库脚本怎么导出

可以使用 mysqldump 实用程序导出 mysql 数据库脚本,方法是运行:mysqldump -u 用户名 -p 密码 数据库名称 > 脚本名.sql。高级选项包括:--all-databases(导出所有数据库)、--tables(
mysql数据库脚本怎么导出
2024-08-05

怎么导出mysql数据库脚本

导出 mysql 数据库脚本可以备份和还原数据库内容。步骤如下:命令行:使用 mysqldump 命令(示例:mysqldump -u root -pmypassword my_database > my_database_backup.s
怎么导出mysql数据库脚本
2024-08-05

navicat怎么导出数据库脚本

使用 navicat 导出数据库脚本的步骤:连接到数据库。选择“导出向导”。选择导出选项和设置(格式、范围、详细选项)。选择要导出的对象。指定文件名称和位置。导出脚本,并保存到指定位置。Navicat 导出数据库脚本Navicat 是一款
navicat怎么导出数据库脚本
2024-04-24

navicat数据库脚本怎么导出

数据库脚本导出教程:连接到数据库,在 navicat 菜单栏选择“工具”菜单->“导出向导”,选择导出格式为“脚本文件”。设置导出选项: 指定导出类型、导出选项,选择输出文件路径和文件名,执行导出。高级选项: 自定义表、视图、存储过程导出选
navicat数据库脚本怎么导出
2024-04-24

python怎么找出列表最大值和最小值

Python中可以使用内置函数max()和min()来找出列表的最大值和最小值。示例代码如下:my_list = [4, 2, 8, 5, 3]# 找出列表的最大值max_value = max(my_list)print("最大值
python怎么找出列表最大值和最小值
2024-02-29

数据库怎么导出大表到服务器

要将数据库中的大表导出到服务器,可以使用数据库管理工具或命令行工具来完成这个操作。以下是一种常用的方法:使用数据库管理工具(如MySQL Workbench、Navicat等)连接到数据库服务器,并选择要导出的数据库。执行SQL查询语句来
数据库怎么导出大表到服务器
2024-04-09

db2数据库怎么查看表空间大小

要查看DB2数据库中表空间的大小,可以使用以下命令:使用命令行窗口登录到DB2数据库:db2 connect to 运行以下命令以查看所有表空间的详细信息:db2 list tablespaces show d
db2数据库怎么查看表空间大小
2024-04-09

navicat怎么导入数据库脚本

navicat 导入数据库脚本步骤:连接到数据库。选择“工具”->“运行 sql 文件”。选择并导入 sql 脚本文件。单击“运行”按钮执行脚本。Navicat 导入数据库脚本Navicat 是一个用于管理关系型数据库的强大的工具。它可以
navicat怎么导入数据库脚本
2024-04-06

oracle数据库脚本怎么执行

本文提供了在 sql*plus、操作系统命令行和 oracle sql developer 中直接执行 oracle 数据库脚本的多种方法:sql*plus:使用 @script_path.sql 语法,例如:@c:\temp\my_scr
oracle数据库脚本怎么执行
2024-05-13

sqlserver怎么导出数据库表数据

可以使用SQL Server Management Studio (SSMS) 或者命令行工具bcp命令来导出数据库表数据。使用SQL Server Management Studio (SSMS) 导出数据:打开SSMS并连接到数据库服务
sqlserver怎么导出数据库表数据
2024-04-09

oracle数据库怎么导出表数据

在Oracle数据库中,可以使用以下方法导出表数据:使用SQL Developer工具打开SQL Developer工具并连接到数据库。在连接的数据库中找到要导出数据的表。右键单击表,选择“导出”选项。选择导出的格式和文件路径,并点击
oracle数据库怎么导出表数据
2024-03-15

mysql怎么导出数据库表

要导出 MySQL 数据库表,可以使用以下两种方法:使用 MySQL 命令行工具导出:打开终端或命令提示符,并登录到 MySQL 命令行界面。运行以下命令导出整个数据库表:mysqldump -u username -p database
mysql怎么导出数据库表
2024-04-09

怎么导出mysql数据库表

如何导出 mysql 数据库表?使用命令行工具:连接到服务器,切换到数据库,导出表(mysqldump table_name > output_file.sql)。使用 mysql workbench gui:连接到服务器,展开数据库,右键
怎么导出mysql数据库表
2024-08-06

编程热搜

目录