知方可补不足~写了一个计算数据表占用存储空间的方法

简介:

这个例子是关于计算数据表中所有字段在一定的数据量下占用存储空间的情况,使用了sys.tables,SYSTYPES和SYSCOLUMNS几张系统表,意思就是遍历所有数据表,然后对表的所以字段的length进行sum,就可以了,方法很容易理解,没什么技术含量,但即起到了重要的效果。

DECLARE @tableName VARCHAR(50)
DECLARE @totalRecord BIGINT

SET @tableName = 'user_info'
SET @totalRecord = 1000000

SELECT  @tableName + '表中有' + LTRIM(STR(@totalRecord)) + '条数据时,占用的空间为:'
        + LTRIM(STR(SUM(c.length) * @totalRecord / 1024.0 / 1024.0)) + 'MB'
FROM    SYSTYPES T ,
        SYSCOLUMNS C
WHERE   T.XTYPE = C.XTYPE
        AND C.ID = ( SELECT ID
                     FROM   SYSOBJECTS
                     WHERE  NAME = @tableName
                   )
 
SELECT  TT.NAME ,
        DATA = @TOTALRECORD ,
        SIZE = ( SELECT STR(SUM(C.LENGTH) * @TOTALRECORD / 1024.0 / 1024.0)
                        + 'MB'
                 FROM   SYSTYPES T ,
                        SYSCOLUMNS C
                 WHERE  T.XTYPE = C.XTYPE
                        AND C.ID = TT.OBJECT_ID
               )
FROM    SYS.TABLES AS TT
ORDER BY TT.NAME

执行结果如下

怎么样,挺有意思吧!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:知方可补不足~写了一个计算数据表占用存储空间的方法,如需转载请自行联系原博主。

目录
相关文章
|
3月前
|
存储 分布式计算 固态存储
starrocks导入性能和分区分桶介绍
starrocks导入性能和分区分桶介绍
starrocks导入性能和分区分桶介绍
|
8月前
|
数据库
数据库——转换金额单位
数据库——转换金额单位
|
10月前
打印中间流水码(前后固定,中间变动)
有一些用户的标签需求是流水数据前后加上其他固定字符,形成中间流水,如:A0001B、A0002B、A0003B...,这样的流水数据利用恒佑的条码打印软件可以轻松实现。
65 0
|
SQL 关系型数据库 MySQL
MySQL查询连续打卡信息?
最近多次看到用SQL查询连续打卡信息问题,自己也实践一波。抛开问题本身,也是对MySQL窗口函数和自定义变量用法的一种练习。
295 0
MySQL查询连续打卡信息?
|
测试技术 数据库
LeetCode(数据库)- 每次访问的交易次数
LeetCode(数据库)- 每次访问的交易次数
182 0
|
数据库
LeetCode(数据库)- 查询结果的质量和占比
LeetCode(数据库)- 查询结果的质量和占比
74 0
|
数据库
LeetCode(数据库)- 报告系统状态的连续日期
LeetCode(数据库)- 报告系统状态的连续日期
85 0
|
JavaScript BI
报表数据填报中的自动计算
报表在进行数据填报时,经常会遇到一些表达式计算,例如:简单的加减乘除、复杂的日期计算等。看润乾报表如何让你摆脱手动计算的尴尬,让数据自己进行自动计算,详细内容请直接戳这里查看:<a href="http://c.
1143 0
|
BI 数据处理 数据采集
轻松实现跨表取数之自动计算
跨表取数,自动计算,java报表
1142 0