1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | if exists( select 1 from tempdb..sysobjects where id=object_id( 'tempdb..#tabName' ) and xtype= 'u' ) drop table #tabName go create table #tabName( tabname varchar (100), rowsNum varchar (100), reserved varchar (100), data varchar (100), index_size varchar (100), unused_size varchar (100) ) declare @ name varchar (100) declare cur cursor for select name from sysobjects where xtype= 'u' order by name open cur fetch next from cur into @ name while @@fetch_status=0 begin insert into #tabName exec sp_spaceused @ name --print @name fetch next from cur into @ name end close cur deallocate cur -- 已经经过优化 select tabname as '表名' ,rowsNum as '表数据行数' ,reserved as '保留大小' , convert ( int , SUBSTRING (data,0,LEN(data)-2)) size , data as '数据大小' ,index_size as '索引大小' ,unused_size as '未使用大小' from #tabName ORDER BY size desc |
关键方法是
sp_spaceused @name
这个方法查询结果包含了表的行数与占用空间等信息
如
sp_spaceused tb_user
结果为