본문 바로가기
Programming/Database

자동으로 생성되는 인덱스

by sh.lee 2018. 11. 8.


인덱스는 테이블의 컬럼 단위에 생성된다.

하나의 컬럼 당 기본적으로 하나의 인덱스를 생성할 수 있다.

-primary key  또는 unique사용하면 자동으로 인덱스가 생성



테이블을 생성해 보자.


CREATE TABLE TBL1

( a NUMBER(4) primary key,

 b NUMBER(4),

c NUMBER(4)

);



- 생성된 인덱스 조회

USER_INDEXS
USER_IND_COLUMS


SELECT I.INDEX_NAME, I.INDEX_TYPE, I.UNIQUENESS, C.COLUMN_NAME, C.DESCEND FROM USER_INDEXES I  INNER JOIN USER_IND_COLUMNS C ON I.INDEX_NAME = C.INDEX_NAME 

WHERE I.TABLE_NAME='TBL1' ;









예상대로 NOMAL 인덱스가 생성되어있다. 생성된 인덱스는 유일한 인덱스인데
인덱스값에 중복된 값이 없다는 의미다. 
A열은 Primary key 로 지정되어 있으므로 당연히 유일한 인덱스가 생성되어있다.


create table TBL2(

a NUMBER(4) primary key,

b NUMBER(4) unique,

c NUMBER(4) unique,

d NUMBER(4)

);


확인해보자.


SELECT I.INDEX_NAME, I.INDEX_TYPE, I.UNIQUENESS, C.COLUMN_NAME, C.DESCEND FROM USER_INDEXES I  INNER JOIN USER_IND_COLUMNS C ON I.INDEX_NAME = C.INDEX_NAME 

WHERE I.TABLE_NAME='TBL2' ;







unique 제약조건으로 설정해도 Nomal 인덱스가 자동으로 생성되는 것을 확인 할 수 있다.

역시 고유 인덱스가 설정되어 있다.


참고로 Primary Key 나 Unique 로 자동생성된 인덱스를 삭제하기 위해서는 해당 제약 조건을 제거하는 수 밖에없다.

즉. DROP INDEX 문으로 자동 생성된 인덱스를 삭제할 수 없다.


ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명 CASCADE;

'Programming > Database' 카테고리의 다른 글

[database]오라클 HR계정 사용하기  (0) 2018.11.05