database 정렬 어떤 경우 Oracle은 자동으로 인덱스를 생성합니까?



오라클 인덱스 정렬 (4)

필자가 아는 한 ( 이 페이지 ) Oracle은 각 UNIQUE 또는 PRIMARY KEY 선언에 대한 색인을 자동으로 작성합니다. Oracle에서 인덱스가 자동으로 생성되는 경우의 전체 목록입니까?


Answer #1

첫째, 오라클은 기본 또는 고유 키를 생성 할 때 항상 색인을 생성하지는 않습니다. 해당 열에 이미 인덱스가있는 경우 대신 해당 인덱스를 사용합니다 ...

SQL> create table t23 (id number not null)
  2  /

Table created.

SQL> create index my_manual_idx on t23 ( id )
  2  /

Index created.

SQL> select index_name from user_indexes
  2  where table_name = 'T23'
  3  /

INDEX_NAME
------------------------------
MY_MANUAL_IDX

SQL> 

... MY_MANUAL_IDX 는 고유 색인이 아닙니다. 상관 없어요.

SQL> alter table t23
  2      add constraint t23_pk primary key (id) using index
  3  /

Table altered.

SQL> select index_name from user_indexes
  2  where table_name = 'T23'
  3  /

INDEX_NAME
------------------------------
MY_MANUAL_IDX

SQL> drop index my_manual_idx
  2  /
drop index my_manual_idx
           *
ERROR at line 1:
ORA-02429: cannot drop index used for enforcement of unique/primary key


SQL> 

오라클이 자동으로 인덱스를 생성하는 또 다른 경우가 있습니다 : LOB 스토리지 ....

SQL> alter table t23
  2      add txt clob
  3      lob (txt) store as basicfile t23_txt (tablespace users)
  4  /

Table altered.

SQL> select index_name from user_indexes
  2  where table_name = 'T23'
  3  /

INDEX_NAME
------------------------------
MY_MANUAL_IDX
SYS_IL0000556081C00002$$

SQL>

편집하다

데이터베이스는 XMLType을 다른 LOB와 동일하게 취급합니다 ...

SQL> alter table t23
  2      add xmldoc xmltype
  3  /

Table altered.

SQL> select index_name from user_indexes
  2  where table_name = 'T23'
  3  /

INDEX_NAME
------------------------------
MY_MANUAL_IDX
SYS_IL0000556081C00002$$
SYS_IL0000556081C00004$$

SQL>    

Answer #2

예, 전체 목록입니다. Oracle은 각 UNIQUE 또는 PRIMARY KEY 선언에 대한 색인을 자동으로 작성합니다.


Answer #3

그리고 또 하나, 중첩 된 테이블로 테이블을 생성하면 인덱스가 자동으로 생성됩니다. 일반적으로 객체 기반 저장소는 숨겨진 테이블을 만들 수 있으므로이 작업을 수행 할 수 있습니다.

나는 스키마 기반 XMLTypes도 그렇게 할 것이라고 생각한다.


Answer #4

주어진 답을 통합하여 커뮤니티 위키로 만들려고 노력할 것입니다.
따라서 인덱스는 Oracle에서 자동으로 생성됩니다.

  1. APC : 기본 키 및 고유 키의 경우 해당 인덱스가 이미 존재하지 않는 한.
  2. APC : LOB 저장 영역 및 XMLType의 경우.
  3. Gary : 중첩 테이블이있는 테이블의 경우.
  4. Jim Hudson : 구체화 된보기.




indexing