[ORACLE] Index Scan 종류

2015. 8. 4. 14:18·데이타베이스

Index Range Scan

인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔하는 방식

B-Tree 인덱스의 가장 일반적이고 정상적인 액세스 방식

인덱스를 스캔하는 범위를 얼마만큼 줄일 수 있느냐와 테이블로 액세스하는 횟수를 얼마만큼 줄일 수 있느냐

인덱스를 구성하는 선두 컬럼이 조건절에 사용되어야 index Range Scan 가능

Index Range Scan 과정을 거쳐 생성된 결과집합은 인덱스 컬럼 순으로 정렬, order by 연산을 생략하거나 min/max값을 빠르게 추출 가능

between, like, 부등호 조건 처리

 

Index Full Scan

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

최적의 인덱스가 없을 때 차선으로 선택

효용성: 인덱스 선두 컬럼이 조건절에 없으면 Table Full Scan을 고려하나, Table Full Scan 보다 I/O를 줄일 수 있거나 정렬된 결과를 쉽게 얻을 수 있을 경우 선택

인덱스를 이용한 sort 연산 대체

 

 

Index Unique Scan

수직적 탐색만으로 데이터를 찾는 방식

작동시점: unique 인덱스를 통해 ‘=’ 조건으로 탐색하는 경우

중복되지 않는 unique한 값을 = 조건으로 검색할 경우 데이터 한 건을 찾는 순간 더 이상 탐색하지 않음

 

Index Skip Scan

조건절에 빠진 인덱스 선두 컬럼의 distinct value 개수가 적고 후행 컬럼의 distinct value 개수가 많을 때 유용

루트 또는 브랜치 블록에서 읽은 컬럼 값 정보를 이용해 조건에 부합하는 레코드를 포함할 가능성이 있는 리프 블록만 골라서 액세스 하는 방식

첫 번째 리프 블록과 마지막 리프 블록은 항상 방문

인덱스의 전체 조건을 이용하지 않고 부분적으로 이용할 경우 사용

/*+ index_ss(emp) */

 

 

Index Fast Full Scan

인덱스 트리 구조를 무시하고 인덱스 세그먼트 전체를 멀티블록 리드 방식으로 스캔

물리적으로 디스크에 저장된 순서대로 인덱스 블록을 읽어 들임

인덱스가 파티션 되어 있지 않더라도 병렬 쿼리 가능

단점

-       인덱스 리프 노드가 갖는 연결 리스트 구조를 이용하지 않기 때문에 얻어진 결과 집합이 인덱스 키 순서대로 정렬되지 않음

-       쿼리에 사용되는 모든 컬림이 인덱스 컬럼에 포함되어 있을 때만 사용 가능

 

Index Range Scan Descending

Index Range Scan 과 동일한 스캔 방식이나 내림차순으로 정렬된 결과집합을 얻는다는 점이 다름

 

 

http://www.dbguide.net/db.db?cmd=view&boardUid=148220&boardConfigUid=9&categoryUid=216&boardIdx=140&boardStep=1

 

반응형
저작자표시 비영리 (새창열림)

'데이타베이스' 카테고리의 다른 글

[MySQL] 시작시간과 종료시간의 차이 비교 함수, TIMEDIFF  (0) 2015.08.05
[ORACLE] 파티션(Partiton)  (0) 2015.08.04
[ORACLE] 인덱스  (0) 2015.08.04
[SQL] 조인  (0) 2015.08.03
DBMS의 공집합과 집합함수  (0) 2015.07.27
'데이타베이스' 카테고리의 다른 글
  • [MySQL] 시작시간과 종료시간의 차이 비교 함수, TIMEDIFF
  • [ORACLE] 파티션(Partiton)
  • [ORACLE] 인덱스
  • [SQL] 조인
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    AWS
    S3
    Linux
    하둡
    mysql
    oozie
    build
    Hadoop
    java
    SPARK
    HDFS
    bash
    하이브
    알고리즘
    yarn
    emr
    백준
    hbase
    HIVE
    airflow
    error
    ubuntu
    정올
    nodejs
    다이나믹
    Python
    파이썬
    k8s
    Tez
    오류
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[ORACLE] Index Scan 종류
상단으로

티스토리툴바