知方(fang)可補不足~寫(xie)了一個計算數據表占用(yong)存儲空(kong)間的方(fang)法
這(zhe)個例子是關于計算數(shu)據(ju)(ju)表(biao)中(zhong)所(suo)(suo)有(you)字段在一定的(de)數(shu)據(ju)(ju)量(liang)下占用存儲空間(jian)的(de)情況(kuang),使用了(le)sys.tables,SYSTYPES和(he)SYSCOLUMNS幾(ji)張系(xi)統表(biao),意(yi)思就是遍歷所(suo)(suo)有(you)數(shu)據(ju)(ju)表(biao),然后對表(biao)的(de)所(suo)(suo)以字段的(de)length進行sum,就可以了(le),方法很容易理解,沒什么技術含量(liang),但即起到了(le)重要的(de)效果(guo)。
DECLARE @tableName VARCHAR(50) DECLARE @totalRecord BIGINT SET @tableName = 'user_info' SET @totalRecord = 1000000 SELECT @tableName + '表中有(you)' + LTRIM(STR(@totalRecord)) + '條數據時,占用的空間(jian)為:' + 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
執行結果如下
怎么樣,挺有意思吧!