gpt4 book ai didi

sql-server - 如何重建表以释放已删除旧列使用的空间

转载 作者:行者123 更新时间:2023-12-04 18:04:44 25 4
gpt4 key购买 nike

我有一个 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; ?或者有什么区别?

最佳答案

如果您删除的列不是任何 blob 数据类型,那么您尝试执行的操作应该可行。

但是,如果您拥有 dropper 的任何列是 blob 数据类型(text、ntext、n\varchar(max)、xml),那么释放空间的最佳方法是

  • 创建新表
  • 用这个旧表中的数据填充该表。
  • 删除旧表。
  • 将新表重命名为旧表。
  • 在新表上创建索引。

  • 根据我的经验,释放曾经被 blob 数据类型使用过的空间从来都不是一项简单易行的任务,除非您删除和创建表。

    重要提示

    用户的任何表特定权限都将丢失,因此在删除和创建对象时要小心。

    关于sql-server - 如何重建表以释放已删除旧列使用的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134582/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com