oracle - DML 操作后重建索引

问题描述 投票:0回答:1

我有一个表,其中一列有主键,另一列有非唯一索引。 表容量约为 200 万条记录。没有适当的隔断。

  1. 删除部分记录(数据量的20%)
  2. 更新非唯一索引列上的数据(100%)

对索引进行这些操作后该怎么办?我应该重建它们吗? 当我进行更新时,我应该删除索引并在之后重新创建它吗?

oracle indexing sql-update sql-delete
1个回答
0
投票

更新不会弄乱您的索引,因此没有理由重建。但它肯定会减慢更新速度相当大。禁用索引 (

alter index ... unusable
)、更新、然后重建 (
alter index ... rebuild
) 比在更新 100% 行期间将其保留在适当位置要好得多。但是,如果您已经完成更新并且在执行更新时完成了所有索引维护,则您无需采取进一步的步骤。

至于删除,这肯定会创建空白空间,但只要您的插入是常规的,空间就会在某个时候被重用,因此不会浪费,所以您不需要执行任何操作。但是,如果您使用直接路径插入,该空间将无法恢复,因此一段时间后您需要使用

alter table ... move
命令重新组织表。由于这个原因,我们通常避免混合删除和直接路径/追加插入。

© www.soinside.com 2019 - 2024. All rights reserved.