删除固定长度的列以释放空间是否明智?

MrV*_*mes 4 sql-server-2005 sql-server shrink disk-space

我在 SQL Server 2005 中有一个巨大的表。(该表大约 40GB)我正在寻找最安全、最轻松的方式来释放空间或延迟其增长。

该表具有三个固定长度 ( char(10)) 列,它们 a) 完全不需要,b) 几乎完全填充了NULL.

如果我删除这些列,SQL Server 是否会在导入新记录时开始使用数据文件中释放的空间?或者由于分散在许多记录上,它们的碎片性质(我假设)是否意味着 SQL Server 将出于性能原因忽略该空间?

如果我删除它们,我可以运行收缩数据库来释放空间吗?

我是唯一使用这个数据库的开发人员,我知道这些列对于需求来说是多余的。15 年前,当不同的懒惰开发人员创建此数据库时,它们与其他所有列一起添加到平面文件中。

gbn*_*gbn 7

  1. 如果您重建索引或运行 DBCC CLEANTABLE,删除它们将回收空间
  2. 新行不会有这些列
  3. 无论是否为 NULL,定长列始终保留空间(注意:带有 NULL 的变长列通常不占用空间)
  4. 不要缩小数据库,它只会再次增长并有其他问题(此处超出范围)
  5. 40GB不大

注意:索引重建以回收空间假设您有一个聚集索引