Oracle11g 删除和重新创建索引是否需要更改未包含在索引中的列大小?

Oracle11g 删除和重新创建索引是否需要更改未包含在索引中的列大小?,oracle11g,Oracle11g,我有一个脚本,它删除3个索引,更改同一个表中与这些索引无关的列,然后重新创建索引。索引位于需要45分钟才能重新创建的大型表上。是否必须删除并重新创建索引 DROP INDEX index1; ALTER TABLE table1 MODIFY colNotInIndex VARCHAR(4000); CREATE INDEX index1 ON table1(col0, col1, col2) TABLESPACE INDX STORAGE ( INITIAL 100k NEXT 100

我有一个脚本,它删除3个索引,更改同一个表中与这些索引无关的列,然后重新创建索引。索引位于需要45分钟才能重新创建的大型表上。是否必须删除并重新创建索引

DROP INDEX index1;

ALTER TABLE table1 MODIFY colNotInIndex VARCHAR(4000);

CREATE INDEX index1 ON table1(col0, col1, col2)
 TABLESPACE INDX
 STORAGE ( INITIAL 100k NEXT 100k PCTINCREASE 0)
/

DB是Oracle 11g

如果不更改索引中的任何列,则无需删除和重新创建索引

如果您正在更新非索引列中的数据——例如,如果您正在更新
colNotInIndex
以在重建索引之前存储其他数据——并且这些更新会导致大量行被迁移,那么在禁用索引的情况下执行此DML可能会更有效(或删除,但删除索引的风险更大,维护难度更大)。额外的索引维护是否会比重建索引增加更多的时间,这是您必须测试的问题,但根据您的描述,删除和重新创建索引似乎不太可能节省时间