인덱스란?
인덱스는 원하는 데이터를 쉽게 찾을 수 있또록 돕는 책의 찾아보기와 유사한 개념이다.
- 검색조건에 부합하는 데이터를 효과적으로 검색할 수 있도록 돕는다
B*Tree 인덱스란?
DBMS에서 널리 사용되는 가장 일반적인 인덱스이다.
루트 블록, 브랜치 블록, 리프 블록으로 구성된다.
루트 블록은 말 그대로 가장 상위에 존재하는 블록이다.
브랜치 블록은 분기를 목적으로 하는 블록이다.
리프 블록은 트리의 가장 아래 단계에 존재하는 블록이다. ROWID로 구성
SINGLE BLOCK I/O는 인덱스 루트 블록을 읽을 때, 인덱스 루트 블록에서 얻은 주소로 브랜치 블록을 읽을 때, 인덱스 프랜치 블록에서 읽은 주소로 리프 블록을 읽을 때, 인덱스 리프블록에서 읽은 주소로 테이블 블록을 읽을 때 발생
MULTIBLOCK I/O는 디스크 상에 그 블록과 인접한 블록들을 한꺼번에 읽어 캐시에 미리 적재한다.
테이블 풀 스캔: 테이블에 존재하는 모든 데이터를 읽어가면서 조건에 맞으면
결과로 추출하고 조건에 맞지 않으면 버리는 방식
인덱스 스캔: 인덱스 스캔은 인덱스를 구성하는 칼럼의 값을 기반으로
데이터를 추출하는 액세스 기법
인덱스 범위 스캔: 인덱스를 이용하여 한건 이상의 데이터를 추출하는 방식
인덱스 유일 스캔: 인덱스를 사용하여 단 하나의 데이터를 추출하는 방식
인덱스 전체 스캔: 인덱스를 처음부터 끝까지 전체를 읽으면서 조건에 맞는 데이터를 추출함
인덱스 스킵 스캔: 인덱스 선두 컬럼이 조건절에 없어도 인덱스를 활용하는 스캔 방식이다
인덱스 고속 전체 스캔: Index Fast Full Scan 은 물리적으로 디스크에 저장된 순서대로 인덱스 리프 블록들을
Multi Block I/O 방식으로 읽어 들인다. 또한 병렬 인덱스 스캔도 가능하다.
인덱스 역순 범위 스캔: 인덱스를 뒤에서부터 앞쪽으로 스캔하기 때문에 내림차순으로 정렬된 결과 집합을
얻을 수 있다