我有一个MSSQL聚簇索引,我想重建它,因为我删除了一些列,我想释放空间。
在文献中,我已经读到,对于堆,你可以写
ALTER TABLE myHeap REBUILD;
对于聚簇索引:
ALTER INDEX IX_myIndex ON myTable REBUILD;
我有两个问题:
1)通过索引重建,删除列以前使用的空间是否会被释放?
2)如果我在群集表上调用ALTER TABLE myHeap REBUILD;
会怎样?我尝试了它似乎工作,但这相当于写ALTER INDEX IX_myIndex ON myTable REBUILD;
?或者有什么区别?
答案 0 :(得分:1)
如果您删除的列不是任何blob数据类型,那么您尝试执行的操作应该可行。
但是如果你有dropper的任何列是blob数据类型(text,ntext,n \ varchar(max),xml)那么释放空间的最好方法是
根据我的经验,一旦blob数据类型使用空间,释放空间绝不是一项简单易行的任务,除非您删除并创建表。
重要提示
用户的任何特定于表的权限都将丢失,因此在删除和创建对象时要小心。
答案 1 :(得分:0)
当您使用聚簇索引重建表时,它会自动重建聚簇索引(聚簇索引就是表)。
请参阅此处的文档...... https://msdn.microsoft.com/en-us/library/ms190273.aspx
REBUILD使用REBUILD WITH语法重建整个表 包括分区表中的所有分区。如果表有 在聚簇索引中,REBUILD选项会重建聚簇索引。 REBUILD可以作为在线操作执行。