반응형
① 인덱스란?
- 색인이라는 뜻의 인덱스(index)는 목차나 색인을 통해 책 내용을 찾는 것과 마찬가지로 오라클 데이터베이스에서 데이터 검색 기능의 향상을 위해 테이블 열에 사용하는 객체를 말한다.
- 테이블에 보관된 특정 행 데이터의 주소, 즉 위치 정보를 책 페이지처럼 목록으로 만들어 놓은 것이다.
- 인덱스는 테이블 열을 여러 가지 분석을 통해 선정하여 설정할 수 있다.
- 인덱스 사용 여부에 따라 데이터 검색방식을 두 가지로 나눈다.
◎ Table Full Scan : 테이블 데이터를 처음부터 끝까지 검색하여 원하는 데이터를 찾는 방식
◎ Index Scan : 인덱스를 통해 데이터를 찾는 방식
- 인덱스도 오라클DB의 객체이므로 USER__INDEXES, USER_IND_COLUMNS와 같은 데이터 사전을 사용한다.
- 인덱스는 사용자가 직접 특정 테이블의 열에 지정할 수도 있지만 열이 기본키(primary key) 또는 고유키(unique key) 일 경우에는 자동 생성된다.
② 인덱스 생성
▶ 기본형식 ( 지정한 각 열 별로 ASC 나 DESC로 인덱스 정렬순서를 정할 수도 있다.)
CREATE INDEX 인덱스 이름
ON 테이블 이름 (열 이름1 ASC or DESC,
열 이름2 ASC or DESC,
... );
▶ IDX_BUSINFO_BITYPE 인덱스가 생성되었다. 정렬은 오름차순(ASC)이 기본값이다.
②-1 여러 가지 인덱스 생성 방식
방식 | 사용 |
단일인덱스(single index) | CREATE INDEX IDX_NAME ON EMP(SAL); |
복합인덱스(concatenated index) 결합인덱스(composite index) -두 개 이상 열로 만들어지는 인덱스 -WHERE절의 두 열이 AND 연산으로 묶이는 경우 |
CREATER INDEX IDX_NAME ON EMP(SAL, ENAME,...); |
고유 인덱스(unique index) -열에 중복 데이터가 없을 때 사용 -UNIQUE 키워드를 지정하지 않으면 비고유 인덱스(non 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); |
③ 인덱스 삭제
▶인덱스 삭제는 DROP 명령어를 사용한다.
DROP INDEX 인덱스 이름;
DROP INDEX IDX_BUSINFO_BITYPE; -- 위에서 생성했던 인덱스 삭제
- 인덱스는 데이터 접근 밑 검색 속도 향상을 위해 사용하는 객체이지만 인덱스 생성이 항상 좋은 결과로 이어지지는 않는다.
- 정확한 데이터 분석에 기반을 두지 않은 인덱스의 무분별한 생성은 오히려 성능을 떨어뜨리는 원인이 되기도 한다.
- 인덱스는 데이터 종류, 분포도, 조회하는 SQL의 구성, 데이터 조작 관련 SQL 문의 작업 빈도, 검색 결과가 전체 데이터에서 차지하는 비중 등 많은 요소를 고려하여 생성해야 한다.
반응형
'데이터베이스' 카테고리의 다른 글
제약조건 (0) | 2022.04.20 |
---|---|
데이터베이스 객체 - 뷰 (0) | 2022.04.19 |
데이터베이스 객체 종류 - 데이터사전 (0) | 2022.04.19 |
세션과 읽기 일관성의 의미, LOCK (0) | 2022.04.18 |
트랜잭션 제어 ROLLBACK, COMMIT (0) | 2022.04.18 |