2

我们有一个巨大的数据库(300GB),其中大部分空间被一张大表占用。该表有许多列被定义为浮点数,每列占用 8 个字节。但是最近我们意识到只需要 4 个字节,我们必须更改每一列的大小,所以我们必须为每一列(大约 6 列)运行这样的查询:

alter table [HugeTable] alter column [Col] float(1)

我的问题是:在减少列大小后,我们应该如何以及何时回收空间?对于我们何时有两种可能性的问题:在每个更改表之后(缺点:它需要更长的时间)或在所有列都减少之后。对于我们的想法是如何的问题:数据库收缩,聚集索引重建。DBCC CLEANTABLE 在我们的案例中也有用吗?据我所知,它仅对可变列类型有用。

谢谢!

编辑:最后我们决定不使用这种方法。相反,我们正在创建一个具有新结构的表并逐渐移动数据。

4

1 回答 1

1

我会调整所有列的大小,然后在数据库上运行维护。每列调整大小后无需执行此操作。

于 2013-04-12T13:06:11.953 回答