我从一个有大约 1.11 亿行(30gb 数据,11gb 索引)的表中删除了一个 char(10) 列
然后我在聚簇索引上运行了索引重建。这耗尽了包含数据库的驱动器上的所有空间。
然后我跑去dbcc cleantable
拿回所有空间,再加上一些演出。
当没有足够的空间用于索引重建时,有没有办法从删除的列中回收空间?
还是该cleantable
操作实际上回收了空间?(我知道它回收了空间,但我猜它可能出于不同的原因回收了空间,因为不建议将 cleantable 作为删除列后回收空间的方法)
DBCC CLEANTABLE
只能用于回收因删除可变长度列而留下的空间。因此,它不能被认为是重建表/索引的“好”替代品。由于您声明删除的列是固定长度的列,因此我只能推测表中存在未使用但已分配空间的其他原因;也许是幽灵记录,或者您实际上也删除了其他一些实际长度可变的列。