친절한SQL튜닝 책 요약 정리
복습 : Index를 <이름, 나이> 로 설정하면. 이름순으로 정렬되고 이름이 같으면 나이순으로 정렬된다.
where 절에 나이 조건만 입력할 경우 해당 record가 전체에 퍼져 있으므로 전체 스캔을 하게 된다.
즉, 시작점을 찾을 수 없는 것이다. 그러므로 인덱스 선두 컬럼인 이름이 포함돼 있는것이 중요하다.
1. Index Range Scan
: 가장 일반적이다. 수직적으로 탐색한 후에 필요한 범위만 스캔.
인덱스 선두 컬럼을 가공하지 않은 상태로 사용해야 하는 것을 주의.
그렇지 않으면 index full scan을 해버리게 된다.
2. Index Full Scan
: 말그대로 인덱스 전체를 탐색한다.
옵티마이저가 Index full scan 과 table full scan 효율성을 비교해 선택한다.
( 접근해야할 테이블이 많으면 table full scan 으로 옵티마이저가 진행, 일반적 )
( sort 생략을 위해 Index full scan 을 하기도 )
3. Index Unique Scan
: WHERE 절에 = 을 사용할 경우처럼 1개만 수직적 탐색
4. Index Skip Scan
: 오라클의 새로운 스캔 방식. 인덱스 선두 컬럼이 조건절에 없을 때 나머지 조건에 맞는 인덱스들만 점프하며 스캔.
Ex) 이름, 나이 순으로 정렬되어 있을 때, 나이가 20 이하인 사람들만 찾을 경우.
동일 이름에서 나이가 20 초과인 인덱스는 생략 후 수직적 탐색으로 다음 이름의 시작점(1)을 찾는다.
그리고 20까지 스캔 후 다음 이름의 시작점을 탐색해 점프한다.
5. Index Fast Full Scan
: 인덱스 트리구조를 무시하고 물리적 순서에 따라 스캔한다. 속도가 빠르다. 단점은 결과가 정렬이 되어 있지 않다.
6. Index Range Scan Descending
: Index Range Scan을 역순으로 하는 것이다. 결과가 내림차순이다.
'DB > 일반' 카테고리의 다른 글
[친절한SQL튜닝 요약 정리] 3-1. 테이블 액세스 최소화 (0) | 2020.12.27 |
---|---|
[친절한SQL튜닝 요약 정리] 2-2. 인덱스 기본 사용법 (0) | 2020.12.27 |
[친절한SQL튜닝 요약 정리] 2-1. 인덱스 구조 및 탐색 (0) | 2020.12.27 |
[친절한SQL튜닝 요약 정리 ] 1. SQL처리 과정과 I/O (0) | 2020.12.20 |
댓글