一行占用多少空间

Nei*_*ght 6 sql-server-2008-r2

我需要找出表中单行占用了多少磁盘空间。然后我可以使用它作为近似值来计算通过删除旧的不需要的数据可以恢复多少磁盘空间。我是否必须SELECT像这样将所有列组合在一个语句中?

SELECT DATALENGTH([Id]) + DATALENGTH([Column1]) + DATALENGTH([Column2]) AS 'Size'
  FROM [MyTable]
Run Code Online (Sandbox Code Playgroud)

或者有没有我不知道的更好,更有效的方法?

编辑

我刚刚注意到,如果一列有一个NULL值,那么我就会得到NULL结果。

gbn*_*gbn 2

您有多少数据?

就我个人而言,我会做其中之一

  • 在测试系统上尝试并检查“之前”和“之后”
  • 只需删除未使用的数据,因为根据定义,不需要它

当你有以下问题时,问题就会变得复杂

  • 可变长度数据:平均使用了多少字段?
  • 页面密度(每页行数)可能不会增加,因此您不会节省空间
  • 索引重复列值,因此您必须对某些列进行两次计数

所以,我会根据经验而不是通过计算来完成......