SQLD 학습(5-2 인덱스 기본)

제우민·2022년 9월 3일
0
post-thumbnail

인덱스란?
인덱스는 원하는 데이터를 쉽게 찾을 수 있또록 돕는 책의 찾아보기와 유사한 개념이다.

  • 검색조건에 부합하는 데이터를 효과적으로 검색할 수 있도록 돕는다

B*Tree 인덱스란?
DBMS에서 널리 사용되는 가장 일반적인 인덱스이다.

  • 루트 블록, 브랜치 블록, 리프 블록으로 구성된다.

  • 루트 블록은 말 그대로 가장 상위에 존재하는 블록이다.

  • 브랜치 블록은 분기를 목적으로 하는 블록이다.

  • 리프 블록은 트리의 가장 아래 단계에 존재하는 블록이다. ROWID로 구성

SINGLE BLOCK I/O VS MULTI BLOCK I/O

SINGLE BLOCK I/O는 인덱스 루트 블록을 읽을 때, 인덱스 루트 블록에서 얻은 주소로 브랜치 블록을 읽을 때, 인덱스 프랜치 블록에서 읽은 주소로 리프 블록을 읽을 때, 인덱스 리프블록에서 읽은 주소로 테이블 블록을 읽을 때 발생

MULTIBLOCK I/O는 디스크 상에 그 블록과 인접한 블록들을 한꺼번에 읽어 캐시에 미리 적재한다.

테이블 풀 스캔과 인덱스 스캔

테이블 풀 스캔: 테이블에 존재하는 모든 데이터를 읽어가면서 조건에 맞으면
결과로 추출하고 조건에 맞지 않으면 버리는 방식

인덱스 스캔: 인덱스 스캔은 인덱스를 구성하는 칼럼의 값을 기반으로
데이터를 추출하는 액세스 기법

인덱스 스캔 유형

  • 인덱스 범위 스캔: 인덱스를 이용하여 한건 이상의 데이터를 추출하는 방식

  • 인덱스 유일 스캔: 인덱스를 사용하여 단 하나의 데이터를 추출하는 방식

  • 인덱스 전체 스캔: 인덱스를 처음부터 끝까지 전체를 읽으면서 조건에 맞는 데이터를 추출함

  • 인덱스 스킵 스캔: 인덱스 선두 컬럼이 조건절에 없어도 인덱스를 활용하는 스캔 방식이다

  • 인덱스 고속 전체 스캔: Index Fast Full Scan 은 물리적으로 디스크에 저장된 순서대로 인덱스 리프 블록들을
    Multi Block I/O 방식으로 읽어 들인다. 또한 병렬 인덱스 스캔도 가능하다.

  • 인덱스 역순 범위 스캔: 인덱스를 뒤에서부터 앞쪽으로 스캔하기 때문에 내림차순으로 정렬된 결과 집합을
    얻을 수 있다

profile
Work hard

0개의 댓글