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
结果为