在 SQL Server 2008 的上下文中。
我正在将值从具有数据类型的列压缩和迁移到具有Text
数据类型的另一列Image
,同一个表。目前,我们不想删除 Text 列。所以,我只是将该列的所有值设置为 NULL。
设置为 NULL 是否会立即提供空间增益?即减少数据库大小?
删除列会这样做吗?
如果没有,需要做哪些额外的事情来声明未使用的空间?
在 SQL Server 2008 的上下文中。
我正在将值从具有数据类型的列压缩和迁移到具有Text
数据类型的另一列Image
,同一个表。目前,我们不想删除 Text 列。所以,我只是将该列的所有值设置为 NULL。
设置为 NULL 是否会立即提供空间增益?即减少数据库大小?
删除列会这样做吗?
如果没有,需要做哪些额外的事情来声明未使用的空间?
对于表的单行中的列值,文本列至少需要 16 个字符值。要在此列中将所有值设置为空,请重新组织数据和索引。
为了回收这个空间,我们必须使用 DBCC CLEANTABLE 或收缩数据库。
语法:DBCC CLEANTABLE(Databasename, "Table_name or View_name")
要实际减小 DATABASE 大小,您需要:
我不建议缩小,因为它会导致碎片。但是,数据库的磁盘占用量不会自动下降。您将拥有一个内部有空白空间的数据库,它可以填充更多数据/索引,而无需进一步扩展数据库。
将值设置为 NULL 不会有任何区别。删除列不会自行释放磁盘空间。您还需要重建索引:Disk Space Taken By Dropped Columns