개발 블로그
INDEX 인덱스 본문
1. INDEX
- INDEX는 오라클에서 제공하는 객체로 SQL 명령문의 처리 속도를 향상시키기 위해서 행들의 위치 정보를 가지고 있다. (내부 구조는 B-트리 형식으로 구성)
- 검색 속도가 빨라지고 시스템에 걸리는 부하를 줄여 시스템 전체 성능을 향상시킨다.
인덱스 구조
- ROWID는 데이터베이스에 저장되어 있는 데이터의 주소이다
SELECT ROWID,
EMP_ID,
EMP_NAME
FROM EMPLOYEE;
- 인덱스는 KEY와 ROWID를 가지고 있는데 KEY는 인덱스를 생성할 때 지정한 컬럼의 값이고 ROWID는 KEY에 해당하는 데이터의 주소이다.


인덱스 종류
| 종류 | 설명 |
| 고유 인덱스(UNIQUE INDEX) | 중복되지 않는 데이터를 인덱스의 키값으로 지정하는 인덱스이다. |
| 비고유 인덱스(NONUNIQUE INDEX) | 중복되는 데이터를 인덱스의 키값으로 지정하는 인덱스로 빈번하게 사용되는 일반 컬럼을 대상으로 성능 향상을 위한 목적으로 생성한다. |
| 단일 인덱스(SINGLE INDEX) | 한 개의 컬럼으로 구성한 인덱스이다. |
| 결합 인덱스 (COMPOSITE INDEX) | 두 개 이상의 컬럼으로 하나의 인덱스로 순서에 의해서 성능이 차이가 있을 수 있다. |
| 함수 기반 인덱스(FUNCTION-BASED INDEX) | 계산식이나 함수 사용식으로 구성한 인덱스이다. |
2. INDEX 생성
- INDEX는 CREATE 구문을 사용해서 생성한다.
CREATE [UNIQUE] INDEX 인덱스 명
ON 테이블명(컬럼명[, 컬럼명]| 함수명, 함수 계산식);
-- 고유 인덱스(UNIQUE INDEX)
-- 중복되는 값이 있는 컬럼을 지정하면 에러가 발생한다.
CREATE UNIQUE INDEX IDX_EMPNO
ON EMPLOYEE(EMP_NO);
-- 비고유 인덱스(NONUNIQUE INDEX)
-- 중복 값이 있는 컬럼에도 생성이 가능하다. (WHERE 절에 빈번하게 사용되는 컬럼을 지정)
CREATE INDEX IDX_DEPTCODE
ON EMPLOYEE(DEPT_CODE);
-- 결합 인덱스 (COMPOSITE INDEX)
-- 두 개 이상의 컬럼을 하나의 인덱스로 생성이 가능하고 순서의 의해 성능의 차이가 날 수 있다.
CREATE INDEX IDX_DEPT
ON DEPARTMENT(DEPT_ID, DEPT_TITLE);
-- 함수 기반 인덱스(FUNCTION-BASED INDEX)
CREATE INDEX IDX_SALCALC
ON EMP_SAL ((SALARY + SALARY*NVL(BONUS, 0)))*12);
3. INDEX 재생성
- 빈번한 DML 작업을 수행한 경우 제거된 인덱스가 필요 없는 공간을 차지하고 있지 않도록 인덱스를 재생성한다.
ALTER INDEX 인덱스명 REBUILD;
4. INDEX 삭제
- INDEX 삭제 시 DROP 구문을 사용해서 삭제한다.
DROP INDEX 인덱스명;'Oracle SQL' 카테고리의 다른 글
| 오라클 PLAN (0) | 2023.06.16 |
|---|---|
| 오라클 SQL 실행 계획 (0) | 2023.06.13 |
| 오라클의 물리적, 논리적 저장 구조 (0) | 2023.06.13 |
| SQL 쿼리 처리 과정 (0) | 2023.06.12 |
| PL/SQL 과제 정리 (0) | 2023.06.07 |