Sql server 如何在SQL中测量表中的表大小(GB)
@Morawski说“一个包含1000列和44000行的表大约有330MB;这是浏览器只需打开几个选项卡就可以使用的大小” 表必须告诉多少列和行其大小为10 GB (旋转表格时只有两个值) @Morawski是如何得出1000列和44000列为330MB的结论的Sql server 如何在SQL中测量表中的表大小(GB),sql-server,size,double,Sql Server,Size,Double,@Morawski说“一个包含1000列和44000行的表大约有330MB;这是浏览器只需打开几个选项卡就可以使用的大小” 表必须告诉多少列和行其大小为10 GB (旋转表格时只有两个值) @Morawski是如何得出1000列和44000列为330MB的结论的 是否有任何脚本可以在SQL中说明这一点?使用了存储过程调用sp\u spaceused。不知道这是否是@Morawski使用的,但作为我手头上的一个开发数据库示例: exec sp_spaceused 'aspnet_users' 给
是否有任何脚本可以在SQL中说明这一点?使用了存储过程调用sp\u spaceused。不知道这是否是@Morawski使用的,但作为我手头上的一个开发数据库示例:
exec sp_spaceused 'aspnet_users'
给予
不确定TSQL脚本(我确定它存在),但您可以通过UI(SSMS)找到它,如下所示: 1) 右键单击表格
2) …属性
3) …存储选项卡
从那里,它会告诉你“数据空间”和“索引空间”——所以如果你想要一个总的足迹,就把它们加起来 编辑
如果要查找表的总占用面积,也要考虑日志空间。
下面是@jon答案中列出的存储过程的信息。此外,它还引用了sys视图,您可以在其中直接查询空间使用情况数据 SQL Server的容量规划有精确的公式:
也许您有兴趣阅读about、about或about.数据库中的所有表
sp_msforeachtable'exec sp_spaceused[?]”在上一个问题中,所有列都包含双精度。这对计算非常重要。是否可以使用此存储过程来获取所有表使用的空间?您是指作为一个整体(总计)还是单独?单独。我的意思是,使用这个存储过程可以得到所有表的列表,以及每个表所使用的大小和空间。这值得一个新问题。在这里发布并链接,我会跟进。为了获得更好的性能,请将光标
设置为STATIC
:将tt光标声明为STATIC For…
name rows reserved data index_size unused
------------- ------- ------------ -------- ------------ ----------
aspnet_Users 3 48 KB 8 KB 40 KB 0 KB
-- Measures tables size (in kilobytes)
-- Tested in MS SQL Server 2008 R2
declare @t table (
name nvarchar(100), [rows] int, [reserved] nvarchar(100), [data] nvarchar(100), [index_size] nvarchar(100), [unused] nvarchar(100)
)
declare @name nvarchar(100)
declare tt cursor for
Select name from sys.tables
open tt
fetch next from tt into @name
while @@FETCH_STATUS = 0
begin
insert into @t
exec sp_spaceused @name
fetch next from tt into @name
end
close tt
deallocate tt
select name as table_name, [rows] as rows_count, data + [index] as total_size, data as data_size, [index] as index_size
from (select name,
[rows],
cast (LEFT(data, LEN(data)-3) as int) data,
cast (LEFT(index_size, LEN(index_size)-3) as int) [index]
from @t
) x
order by 3 desc, 1