인덱스는 테이블의 컬럼 단위에 생성된다.
하나의 컬럼 당 기본적으로 하나의 인덱스를 생성할 수 있다.
-primary key 또는 unique사용하면 자동으로 인덱스가 생성
테이블을 생성해 보자.
CREATE TABLE TBL1
( a NUMBER(4) primary key,
b NUMBER(4),
c 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='TBL1' ;
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 |
---|