我有一个表,其中一列有主键,另一列有非唯一索引。 表容量约为 200 万条记录。没有适当的隔断。
对索引进行这些操作后该怎么办?我应该重建它们吗? 当我进行更新时,我应该删除索引并在之后重新创建它吗?
更新不会弄乱您的索引,因此没有理由重建。但它肯定会减慢更新速度相当大。禁用索引 (
alter index ... unusable
)、更新、然后重建 (alter index ... rebuild
) 比在更新 100% 行期间将其保留在适当位置要好得多。但是,如果您已经完成更新并且在执行更新时完成了所有索引维护,则您无需采取进一步的步骤。
至于删除,这肯定会创建空白空间,但只要您的插入是常规的,空间就会在某个时候被重用,因此不会浪费,所以您不需要执行任何操作。但是,如果您使用直接路径插入,该空间将无法恢复,因此一段时间后您需要使用
alter table ... move
命令重新组织表。由于这个原因,我们通常避免混合删除和直接路径/追加插入。