edu*_*edu 5 database sql-server
我有一个 MSSQL 聚集索引,我想重建它,因为我删除了一些列并且我想释放空间。
在文献中,我读到,对于堆,你可以写
ALTER TABLE myHeap REBUILD;
Run Code Online (Sandbox Code Playgroud)
对于聚集索引:
ALTER INDEX IX_myIndex ON myTable REBUILD;
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1)重建索引后,之前被删除的列使用的空间会被释放吗?
ALTER TABLE myHeap REBUILD;2)如果我调用聚簇表会发生什么?我尝试了一下,似乎可行,但这相当于写作吗ALTER INDEX IX_myIndex ON myTable REBUILD;?或者说有什么区别?
如果您删除的列不是任何 blob 数据类型,那么您尝试执行的操作应该有效。
但是,如果您拥有 dropper 的任何列都是 blob 数据类型(text、ntext、n\varchar(max)、xml),那么释放空间的最佳方法是
根据我的经验,释放 blob 数据类型曾经使用的空间从来都不是一件简单而容易的任务,除非您删除并创建表。
重要的提示
用户的任何表特定权限都将丢失,因此在删除和创建对象时要小心。