1. Index

- 데이터베이스에서 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체를 의미한다.

- 사용자가 직접 특정 테이블의 열에 지정할 수도 있지만, 열이 Primary key 또는 Unique key일 경우에는 자동으로 생성된다.

/* Index 예시1 : 유저가 소유한 인덱스 정보 확인 */
SELECT *
FROM USER_INDEXES;

/* Index 예시2 : 유저가 소유한 인덱스 컬럼 정보 확인 */
SELECT *
FROM USER_IND_COLUMNS;

 

1.1 Index 생성

/* CREATE INDEX */
CREATE INDEX 인덱스이름
ON 테이블이름 (
	열이름1 ASC or DESC,
	열이름2 ASC or DESC,
	... ,
	열이름n ASC or DESC
);

- 데이터베이스에서 자동으로 생성해 주는 인덱스 외에 사용자가 직접 인덱스를 만들 때는 CREATE문을 사용한다.

- 인덱스의 정렬 옵션을 지정하지 않으면 기본값은 오름차순(ASC)으로 지정된다.

/* CREATE INDEX 예시 */
CREATE INDEX IDX_EMP_SAL
ON EMP(SAL);

 

1.2 Index 삭제

/* DROP INDEX 예시 */
DROP INDEX 인덱스이름;

- DROP 명령어를 사용하여 인덱스를 삭제할 수 있다.

/* DROP INDEX 예시 */
DROP INDEX IDX_EMP_SAL;

 

1.3 Index 종류

종류 설명
Single index 하나의 열로 만들어지는 인덱스이다.
Composite(Concatenated) index - 두 개 이상 열로 만들어지는 인덱스이다.
- WHERE절의 두 열이 AND 연산으로 묶이는 경우가 해당된다.
Unique index - 열에 중복 데이터가 없을 때 사용한다.
- UNIQUE 키워드를 지정하지 않으면 NON UNIQUE INDEX가 기본값이다.
Function based index 열에 산술식 같은 데이터 가공이 진행된 결과로 인덱스를 생성한다.
Bitmap index 데이터 종류가 적고 같은 데이터가 많이 존재할 때 주로 사용한다.
/* Single index */
CREATE INDEX IDX_NAME
ON EMP(SAL);

/* Composite(Concatenated) index */
CREATE INDEX IDX_NAME
ON EMP(SAL, ENAME, ...);

/* Unique index */
CREATE UNIQUE INDEX IDX_NAME
ON EMP(EMPNO);

/* Function based index */
CREATE INDEX IDX_NAME
ON EMP(SAL*12 + COMM);

/* Bitmap index */
CREATE BITMAP INDEX IDX_NAME
ON EMP(JOB);

 

참고

- 『오라클로 배우는 데이터베이스 입문』

'Database' 카테고리의 다른 글

Sequence  (0) 2021.10.28
View  (0) 2021.10.28
Data Dictionary  (0) 2021.10.26
DDL(Data Definition Language)  (0) 2021.10.25
Transaction & Session  (0) 2021.10.22