B-트리 인덱스

Ga0·2023년 7월 3일
0

SQL

목록 보기
1/6

인덱스(Index)

  • 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념으로, 인덱스의 목적은 검색 성능의 최적화이다.
  • But, 인덱스를 생성하면 DML(insert, update, delete 등)은 느려진다.

B-트리 인덱스

  • 트리 기반 인덱스이다.
  • DBMS 에서 가장 일반적인 인덱스이다.
  • Branch BlockLeaf Block으로 구성된다.
  • Branch Block 중 가장 상위에 있는 블록을 Root Block이라고 한다.
  • Branch Block은 분기를 목적으로 하는 블록이다.
  • Leaf Block은 가장 아래 단계에 존재한다.
  • Leaf Block은 인덱스를 구성하는 컬럼의 데이터와 해당 데이터를 가지고 있는 행의 위치를 가리키는 레코드 식별자(RID, Record Identifier/ Rowid) 로 구성되어 있다.
  • 만약 인덱스 데이터의 값이 동일하면 레코드 식별자의 순서로 저장된다.
  • Leaf Block은 양방향 링크를 가지고 있다.( 오름차순과 내림차순 검색 쉽게 가능)
  • = 로 검색하는 일치 검색과 between, > 등과 같은 연산자로 검색하는 범위 검색 모두에 적합한 구조이다.
  • 인덱스를 생성할 때 동일 컬럼으로 구성된 인덱스를 중복해서 생성은 불가능하지만, 인덱스 구성 컬럼은 동일하고 컬럼 순서가 다르면 서로 다른 인덱스로 생성할 수 있다.

원하는 값을 찾는 과정

  1. Branch Block의 가장 왼쪽 값이 찾고자 하는 값보다 작거나 같으면 왼쪽 포인터로 이동
  2. Branch Block의 값 사이에 존재하면 가운데 포인터로 이동
  3. Branch Block의 찾고자 하는 값이 가장 오른쪽에 있는 값보다 크면 오른쪽 포인터로 이동

0개의 댓글