在我的数据库中,最初我有一个包含三列的表,当时没有数据,MDf 文件大小为 5122 KB。

然后我在这个表中插入了 500000 条记录,MDF 文件大小增加到 19456 KB

然后我更新了我的表并将一列的所有值设为 Null,但文件大小仍然相同,即 19456 KB。

然后我删除了这个表中的所有记录,但我的 MDF 文件大小仍然是 19456 KB。

我想知道为什么文件大小没有改变?
列中的 Null 值是否占用空间?

最佳答案

要回收空间,您需要缩小数据库,因为出于性能原因,这不会自动完成。

更多信息:

  • DBCC SHRINKDATABASE
  • DBCC SHRINKFILE
  • How do I reclaim space in SQL Server?


  • 对于可变宽度列,NULL 值不占用存储空间。
  • 对于固定宽度的列,NULL 值需要与任何其他值相同的存储空间。
  • 此外,在某些情况下,使列可为空会增加每行用于存储可为空位图的开销。
  • 10-08 15:00