Msg 성장일기
인덱스 확장기능 사용법 본문
1. Index Range Scan
└ BTree의 가장 일반적이고 정상적인 형태의 액세스 방식, 인덱스 루프에서 리프블록까지 수직적으로 탐색한 후에 '필요한 범위(Range)만' 스캔한다. 실행계획은 아래와 같다.


2. Index Full Scan
└ 수직적 탐색없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식


Index full scan은 대개 데이터 검색을 위한 최적의 인덱스가 없을 때 차선으로 선택된다.
3. Index Skip Scan
└ 오라클에서 인덱스 선두 컬럼이 조건절에 없어도 인덱스를 활용하는 새로운 스캔방식
└ 인덱스 선두 컬럼의 Distinct Value 개수가 적고 후행 컬럼의 Distinct value개수가 많을 때 유용하다.



└ index skip scan은 루트 또는 브랜치 블록에서 읽은 컬럼 값 정보를 이용해 조건절에 부합하는 레코드를 포함할 '가능성이 있는' 리프 블록만 골라서 액세스하는 스캔방식이다.
4. Index Fast Full Scan
└ Index full Scan보다 빠르다. 논리적인 인덱스 트리 구조를 무시하고 인덱스 세그먼트 전체를 Multiblock I/O방식으로 스캔하기 때문이다.
└ 속도는 빠르지만, 인덱스 리프 노드가 갖는 연결 리스트 구조를 무시한 채 데이터를 읽기 때문에 결과집합이 인덱스 키 순서대로 정렬되지 않는다.
|
Index Full Scan
|
Index Fast Full Scan
|
|
1. 인덱스 구조를 따라 스캔
2. 결과집합 순서 보장
3. Single Block I/O
4. (파티션 돼 있지 않다면) 병렬스캔 불가
5. 인덱스에 포함되지 않은 컬럼 조회 시에도 사용 가능
|
1. 세그먼트 전체를 스캔
2. 결과집합 순서 보장 안 됨
3. Multiblock I/O
4. 병렬스캔 가능
5. 인덱스에 포함된 컬럼으로만 조회할 때 사용 가능
|
5. Index Range Scan Descending
└ Index Range Scan과 기본적으로 동일한 스캔 방식이다. 인덱스를 뒤에서부터 앞쪽으로 스캔하기 때문에 내림차순으로 정렬된 결과집합을 얻는다는 점만 다르다.


출처: 개발자를 위한 SQL 튜닝 입문서 친절한 SQL 튜닝
'study_SQL > 친절한 SQL 튜닝' 카테고리의 다른 글
| 인덱스 스캔 효율화 (0) | 2023.06.14 |
|---|---|
| 부분범위 처리 활용 (0) | 2023.06.14 |
| 테이블 액세스 최소화 (0) | 2023.06.14 |
| 인덱스 기본 (0) | 2023.06.13 |
| SQL 처리과정과 I/O (0) | 2023.06.13 |