SQL:获取表的子集的物理大小

时间:2012-01-19 00:10:18

标签: sql sql-server-2005

我正在使用

获取数据库中表的大小
sp_spaceused MyTable

有没有人知道找出该数据的某个子集占用多少空间的好方法?
因此,例如,如果我想通过删除MyTable中超过2年的所有记录来找出我将减少多少空间。因此,除了MyTable使用的空间外,我将获得(SELECT * FROM MyTable WHERE AddedDate<'2010')使用的空间。

由于

2 个答案:

答案 0 :(得分:2)

它不会或多或少地完全取消行的百分比吗?因此,计算总行数,然后计算满足条件的行数,并进行除法。当然,要使该空间变得完全可用,您可能需要重建表和/或索引。

我想如果你有var-length数据并且某些行比其他行大得多,那么这种方法可能只是近似的,但在大多数情况下它应该足够好。

答案 1 :(得分:0)

您是否有时间和空间使用带有WHERE子句的INSERT INTO查询来创建新表?如果是这样,您可以这样做并使用sp_spaceused来检查新表的大小。这不太准确,但它应该给你一个很好的主意。