본문으로 바로가기

[DataBase] 인덱스

category Programming/ DataBase 2018. 4. 21. 17:40
인덱스란?

1. 인덱스의 정의
인덱스는 일반 테이블에서 쓰여지는 선택적인 객체로서, 오라클 데이터 베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조.

테이블 로우에 하나씩 대응되는 별도의 객체
인덱스는 하나의 테이블에 여러개를 지정할 수 있고, 하나의 컬럼은 여러개의 인덱스에 포함 될 수도 있다.
테이블과 무관하게 생성 및 삭제를 독립적으로 할 수 있다.

 자동 인덱스

PRIMARY KEY 또는 UNIQUE 제약조건에 의해 자동적으로 생성되는 인덱스 

 수동 인덱스

CREATE INDEX 명령을 실행해서 만드는 인덱스




<인덱스 생성 형식>




----------------------------------------------------------------------------------------------------------------------------------------------------



2. 인덱스의 특징 / 장점과 단점

특징 - 1. 인덱스 생성 시에는 데이터 블록은 그냥 둔 상태에서 별도의 블록에 인덱스를 구성한다.

 2. 인덱스의 리프 블록은 데이터가 아니라, 데이터가 위치하는 주소값(ROWID)이다.

 3. 데이터의 입력/수정/삭제 시 인덱스가 없을 때보다 느리다.

 4. 인덱스는 여러 개 생성할 수 있다. 하지만 남용할 경우 시스템 성능을 떨어트린다.


장점 - 1. 검색 속도가 무척 빠르다

 2. 시스템 전체의 성능 향상


단점 - 1. 데이터베이스 크기의 10% 추가공간이 필요

 2. 첫 인덱스 생성에 시간이 많이 소요

 3. 변경작업(INSERT, UPDATE, DELETE)이 자주 일어나면 오히려 성능 저하



----------------------------------------------------------------------------------------------------------------------------------------------------



3. 인덱스의 종류

1. BITMAP 인덱스

2. 함수 기반 인덱스

3. 어플리케이션 도메인 인덱스

4. B-TREE 인덱스(OLTP) -->  필요한 인덱스만 최소로 생성!





'Programming > DataBase' 카테고리의 다른 글

[DataBase] SYNONYM - 동의어  (0) 2018.04.23
[DataBase] Oracle SQL 서브쿼리  (3) 2018.04.21
[DataBase] Transaction  (0) 2018.04.19
[DataBase] DDL / DML / 서브쿼리  (1) 2018.04.19
[DataBase] GROUP 함수  (0) 2018.04.18