본문 바로가기
DB/일반

[친절한SQL튜닝 요약 정리] 2-3. 인덱스 확장기능 사용법

by hongdor 2020. 12. 27.
728x90

친절한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을 역순으로 하는 것이다. 결과가 내림차순이다.

 

728x90

댓글