返回顶部
首页 > 资讯 > 数据库 >sybase数据库怎么找出表大小脚本
  • 774
分享到

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

2024-04-02 19:04:59 774人浏览 安东尼
摘要

这篇文章主要介绍“sybase数据库怎么找出表大小脚本”,在日常操作中,相信很多人在sybase数据库怎么找出表大小脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”syba

这篇文章主要介绍“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数据库怎么找出表大小脚本”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: sybase数据库怎么找出表大小脚本

本文链接: https://lsjlt.com/news/64353.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • sybase数据库怎么找出表大小脚本
    这篇文章主要介绍“sybase数据库怎么找出表大小脚本”,在日常操作中,相信很多人在sybase数据库怎么找出表大小脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”syba...
    99+
    2024-04-02
  • navicat数据库脚本怎么导出
    数据库脚本导出教程:连接到数据库,在 navicat 菜单栏选择“工具”菜单->“导出向导”,选择导出格式为“脚本文件”。设置导出选项: 指定导出类型、导出选项,选择输出文件路径和...
    99+
    2024-04-24
    navicat
  • navicat怎么导出数据库脚本
    使用 navicat 导出数据库脚本的步骤:连接到数据库。选择“导出向导”。选择导出选项和设置(格式、范围、详细选项)。选择要导出的对象。指定文件名称和位置。导出脚本,并保存到指定位置。...
    99+
    2024-04-24
    navicat
  • 怎么导出mysql数据库脚本
    导出 mysql 数据库脚本可以备份和还原数据库内容。步骤如下:命令行:使用 mysqldump 命令(示例:mysqldump -u root -pmypassword my_data...
    99+
    2024-08-05
    mysql linux
  • mysql数据库脚本怎么导出
    可以使用 mysqldump 实用程序导出 mysql 数据库脚本,方法是运行:mysqldump -u 用户名 -p 密码 数据库名称 &gt; 脚本名.sql。高级选项包括:...
    99+
    2024-08-05
    mysql
  • pg数据库怎么查看表大小
    要查看 PostgreSQL 数据库中表的大小,可以使用以下 SQL 查询语句: SELECT pg_size_p...
    99+
    2024-04-02
  • 数据库脚本如何导出
    数据库脚本可以通过以下几种方法导出:1. 使用数据库管理工具导出:大多数数据库管理工具(如MySQL Workbench、Navic...
    99+
    2023-08-29
    数据库
  • 大文本数据怎么导入导出到数据库
    这篇文章主要介绍“大文本数据怎么导入导出到数据库”,在日常操作中,相信很多人在大文本数据怎么导入导出到数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”大文本数据怎么导入导...
    99+
    2024-04-02
  • python怎么找出列表最大值和最小值
    Python中可以使用内置函数max()和min()来找出列表的最大值和最小值。 示例代码如下: my_list = [4, 2, ...
    99+
    2024-02-29
    python
  • 数据库怎么导出大表到服务器
    要将数据库中的大表导出到服务器,可以使用数据库管理工具或命令行工具来完成这个操作。以下是一种常用的方法: 使用数据库管理工具(如M...
    99+
    2024-04-09
    数据库
  • db2数据库怎么查看表空间大小
    要查看DB2数据库中表空间的大小,可以使用以下命令: 使用命令行窗口登录到DB2数据库: db2 connect to <...
    99+
    2024-04-09
    db2
  • 统计数据库中表大小
    use testdb go if object_id('tempdb.dbo.#tablespaceinfo','U') is not null   dro ...
    99+
    2024-04-02
  • MySQL中怎么查看数据库表容量大小
    MySQL中怎么查看数据库表容量大小,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 查看所有数据库容量大小SELEC...
    99+
    2024-04-02
  • navicat怎么导入数据库脚本
    navicat 导入数据库脚本步骤:连接到数据库。选择“工具”->“运行 sql 文件”。选择并导入 sql 脚本文件。单击“运行”按钮执行脚本。 Navicat 导入数据库脚本...
    99+
    2024-04-06
    navicat 数据丢失
  • oracle数据库脚本怎么执行
    本文提供了在 sql*plus、操作系统命令行和 oracle sql developer 中直接执行 oracle 数据库脚本的多种方法:sql*plus:使用 @script_pat...
    99+
    2024-05-13
    oracle
  • python脚本按表备份MySQL数据库
    脚本功能: 1.自动创建备份目录 2.自动备份数据库的每个表,并压缩 3.备份结果,邮件通知联系人 4.脚本内容#!/usr/bin/env  p...
    99+
    2024-04-02
  • datagrip怎么找到数据库和表
    这篇文章将为大家详细讲解有关datagrip怎么找到数据库和表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。但是不知道为什么navicat总是无法连接oracle,因此转...
    99+
    2024-04-02
  • oracle数据库怎么导出表数据
    在Oracle数据库中,可以使用以下方法导出表数据: 使用SQL Developer工具 打开SQL Developer工具并...
    99+
    2024-03-15
    oracle
  • 怎么将数据库表数据导出
    有多种方法可以将数据库表数据导出,以下是其中几种常用的方法: 使用数据库管理工具:许多数据库管理工具(如MySQL Workbe...
    99+
    2024-04-02
  • sqlserver怎么导出数据库表数据
    可以使用SQL Server Management Studio (SSMS) 或者命令行工具bcp命令来导出数据库表数据。 使...
    99+
    2024-04-09
    sqlserver 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作