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

回到目录

这个例子是关于计算数据表中所有字段在一定的数据量下占用存储空间的情况,使用了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
复制代码

执行结果如下

怎么样,挺有意思吧!

回到目录

posted @   张占岭  阅读(572)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2012-04-13 MVC验证(自动在基类中验证实体的数据有效性),本人最满意的作品之一
点击右上角即可分享
微信分享提示