知方可補不足 寫了乙個計算資料表占用儲存空間的方法

2021-09-06 22:25:38 字數 1224 閱讀 1328

回到目錄

這個例子是關於計算資料表中所有欄位在一定的資料量下占用儲存空間的情況,使用了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

ttorder

by tt.name

執行結果如下

怎麼樣,挺有意思吧!

回到目錄

資料表資料遷移 複製乙個表的資料到另外乙個表

通過 sql,你可以從乙個表複製資訊到另乙個表。mysql 資料庫不支援 select into 語句,但支援 insert into select select into 語句從乙個表複製資料,然後把資料插入到另乙個新錶中。create table 新錶 as select from 舊表 我們可...

返回乙個資料表的集合

create or replace package pag selecttable istype select table is ref cursor end pag selecttable create or replace procedure pro selecttable tablename ...

如何取得乙個資料表的所有列名

如何取得乙個資料表的所有列名 方法如下 先從systemobject系統表中取得資料表的systemid,然後再syscolumn表中取得該資料表的所有列名。sql語句如下 declare objid int,objname char 40 set objname tablename select ...