web-dev-qa-db-ja.com

既存のテーブルOracleにインデックスを作成する

Oracleの既存のテーブルにインデックスを作成しても安全ですか?

このような:

CREATE INDEX table_sample_ix03
      ON table_sample
(
  col4,
  col22
)
TABLESPACE data
STORAGE
(
  INITIAL        10M    NEXT          2M
  MINEXTENTS      1     MAXEXTENTS  100
  PCTINCREASE     0
)
;
15
Michael

DMLクエリがテーブルで実行されているときにインデックスを作成する場合は、ONLINE句をお勧めします。 http://docs.Oracle.com/cd/B19306_01/server.102/b14200/statements_5010.htm を参照してください

例:

CREATE  INDEX "MYINDEX" ON "MYTABLE" ("MYCOLUMN")  ONLINE;
15

はい。ただし、可能であれば、誰もテーブルを更新していないときに実行する必要があります。パフォーマンスの点で問題があるためです(とにかく安全に実行しても、データが破損することはありません)。

9
Thilo

はい。なんでだろう?

コマンドを発行した直後に、考えられるパフォーマンスの問題を考えることができます。テーブルが非常に大きい場合、インデックス作成にはしばらく時間がかかりますが、それ以外の場合は問題ありません。

1
deltaforce2