我们有一个巨大的数据库(300GB),其中大部分空间被一张大桌子占用。该表有许多列定义为float,每个8个字节。但是最近我们意识到只需要4个字节,我们必须改变每个列的大小,所以我们必须为每个列(大约6列)运行这样的查询:
alter table [HugeTable] alter column [Col] float(1)
我的问题是:在减小色谱柱尺寸后,我们应该如何以及何时回收空间?关于何时我们有两种可能性的问题:在每个更改表之后(缺点:需要更长时间)或在所有列减少之后。关于我们的想法是什么的问题:db shrink,聚集索引重建。在我们的案例中,DBCC CLEANTABLE也会有用吗?根据我的理解,它仅对变量列类型有用。
谢谢!
编辑:最后我们决定不使用这种方法。相反,我们正在创建一个包含新结构的表,并逐渐移动数据。
答案 0 :(得分:0)
我会调整所有列的大小,然后在db上运行维护。每个列调整大小后无需执行此操作。