SQL 스터디 5주차!
INDEX
기본 개념
- 인덱스: 테이블 내의 데이터를 찾을 수 있게 일부 데이터를 모아서 구성한 데이터 구조
- 목적: 테이블 내의 데이터를 빠르게 찾아내기 위함
- 생성방법
1
CREATE INDEX 인덱스명 on 테이블명(컬럼명)
인덱스의 종류
구성하는 컬럼의 수에 따른 분류
- 단일인덱스
Single column index
- 인덱스에 하나의 컬럼만 사용
- PK속성이 단일 컬럼일 때 주로 사용
- 복합인덱스
Composite index
: 인덱스에 두 개 이상의 컬럼을 사용- 여러개의 인덱스를 대신할 수 있음
- 가능하면 하나의 복합 인덱스로 여러 SQL을 커버하는 게 좋음
구성하는 컬럼 값의 중복 허용 여부에 따른 분류
- 유니크 인덱스 : 인덱스 구성 컬럼들 값에 중복을 허용하지 않음
- 데이터베이스 설계 시점부터 업무적으로 유니크한 속성들을 파악해서 유니크 인덱스를 만들어주는 것이 좋다.
- 비유니크 인덱스: 인덱스 구성 컬럼들 값에 중복을 허용
물리적인 구조에 따른 분류
- B*트리 인덱스
- 비트맵 인덱스
- 값의 종류가 많지 않은 컬럼에 사용
파티션 테이블에 만드는 파티션 된 인덱스
- 글로벌 인덱스
- 로컬 인덱스
B*트리 구조
- 균형이 잡혀 있고, 근접한 리프 노드가 연결(link)된 구조
Root block
-Branch block
-Leaf Block
Root block
- 최상위에 단 하나만 존재
- 하위 브랜치 블록의 인덱스 키 값과 주소를 가지고 있음
Branch block
- 루프와 리프의 중간에 위치, 브랜치는 여러 층이 있을 수 있음
- 하위 브랜치의 인덱스 키 값과 주소 or 하위 리프의 키 값과 주소를 가지고 있음
Leaf block
- 최하위에만 위치
- 인덱스 키 값과 데이터의 ROWID를 가지고 있음
- 인덱스 키 값 순으로 정렬되어 있음
오라클에서 데이터를 찾는 방법
- 테이블 전체 읽기
TABLE ACCESS FULL
- 인덱스를 이용한 찾기
INDEX RANGE SCAN
&TABLE ACCESS BY INDEX ROWID
- ROWID를 이용한 직접 찾기
TABLE ACCESS BY INDEX ROWID
reference
SQL BOOSTER