인덱스
빠른 검색을 위해서 사용. SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 생성하는 오라클 객체
인덱스의 장점
- 검색 속도가 빨라진다.
- 시스템에 부하를 줄여서 시스템의 전체 성능을 향상시킨다.
인덱스의 단점
- 인덱스를 위한 추가 공간이 필요하다.
- 인덱스를 생성하는데 시간이 걸린다.
- 데이터의 변경 작업(INSERT, UPDATE, DELETE)이 자주 일어날 때는 오히려 성능이 저하된다.
1. 인덱스 생성과 삭제
1) 인덱스 생성
CREATE INDEX index_name
ON table_name (column_name);
2) 인덱스 삭제
DROP INDEX index_name;
예제)
CREATE INDEX INDEX_EMP_COPY_ENAME
ON EMP_COPY(ENAME);
-- EMPCOPY 테이블의 ENAME에 대한 인덱스 생성
SELECT INDEX_NAME, TABLE_NAME
FROM USER_INDEXES
WHERE TABLE_NAME IN('EMP_COPY');
-- 생성된 인덱스 확인
SELECT DISTINCT EMPNO, ENAME FROM EMP_COPY
WHERE ENAME = 'JONES';
-- 이름(ENAME) JONES를 검색. 빠르게 검색된다.
DROP INDEX INDEX_EMP_COPY_ENAME;
1) 인덱스를 사용해야 하는 경우
- 테이블에 행의 수가 많을 때
- WHERE문에 해당 컬럼이 많이 사용될 때
- 검색 결과가 전체 데이터의 2%~4% 정도일 때
- JOIN에 자주 사용되는 컬럼이나 NULL을 포함하는 컬럼이 많은 경우
2) 인덱스를 사용하면 안되는 경우
- 테이블에 행의 수가 적을 때
- WHERE문에 해당 컬럼이 자주 사용되지 않을 때
- 검색 결과가 전체 데이터의 10%~15% 이상일 때
- 테이블에 DML 작업이 많은 경우(입력 수정 삭제가 자주 일어날 때)
3. 인덱스의 물리적인 구조와 재생성
1) B-트리 인덱스 재생성
인덱스가 생성된 후 새로운 행을 추가하거나 삭제할 때 인덱스로 사용된 값이 변경될 수 있다. 이럴 경우 기본 테이블에서 추가, 삭제, 갱신 작업이 일어날 때 해당 테이블에 걸린 인덱스 내용도 수정해야 한다.
ALTER INDEX index_name REBUILD;
-- 인덱스를 재생성한다.
4. 인덱스의 종류
1) 고유 인덱스
유일 인덱스. 유일한 값을 갖는 컬럼에 설정.
CREATE UNIQUE INDEX index_name
ON table_name (column_name);
-- 기존의 인덱스는 비고유 인덱스로, 고유 인덱스에는 UNIQUE 옵션을 추가해서 인덱스를 생성해야 한다.
2) 비고유 인덱스
유일하지 값을 갖는 컬럼에 설정. 기본 인덱스 형식이다.
CREATE INDEX index_name
ON table_name (column_name);
3) 결합 인덱스
두 개 이상의 컬럼으로 인덱스를 구성
함수 기반 인덱스는 수식이나 함수를 적용하여 만든 인덱스
'오라클 기초' 카테고리의 다른 글
동의어 (SYNONYM, 시노늄) (0) | 2016.01.20 |
---|---|
사용자 관리, 권한 제어: GRANT, REVOKE, 스키마, 롤 (0) | 2016.01.20 |
시퀀스(SEQUENCE): 자동 번호 발생기 (0) | 2016.01.19 |
가상 테이블 뷰(VIEW) (0) | 2016.01.19 |
Oracle SQL Developer에서 ERD 만들기 (1) | 2016.01.18 |