2

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はオラクル11g

4

1 に答える 1

2

インデックス内の列を変更しない場合は、インデックスを削除して再作成する必要はありません。

インデックスが作成されていない列のデータを更新している場合 (たとえば、インデックスをcolNotInIndex再構築する前に追加のデータを格納するために更新している場合)、これらの更新によって多数の行が移行される場合、インデックスを無効にしてこの DML を実行する方が効率的です (または削除しますが、インデックスの削除はリスクが高く、維持が困難です)。インデックスのメンテナンスを追加すると、インデックスを再構築するよりもプロセスに時間がかかるかどうかをテストする必要がありますが、説明に基づいて、インデックスを削除して再作成すると時間が節約される可能性は低いと思われます。

于 2012-10-16T15:29:37.540 に答える