인덱스

디스크 읽기 방식

  • 랜덤 I/O, 순차 I/O
  • Primary Key, Seccondary Key

  • B-Tree 인덱스
  • Hash 인덱스
  • Fractal-Tree 인덱스, Merge-Tree 인덱스
  • 쿼리튜닝으로 랜덤 I/O를 순차 I/O로 바꿔서 실행하는 방법은 그다지 많지 않음

인덱스란?

  • SortedList, ArrayList
  • 데이터를 관리하는 방식과 중복 값 허용 여부 등에 따라 구분
    • 프라이머리 키
    • 세컨더리 인덱스(프라이머리 키를 지외한 인덱스)

B-Tree 인덱스

  • 가장 일반적인 인덱싱 알고리즘
  • DBMS에서는 주로 변형된 형태인 B+-Tree 또는 B*-Tree가 사용됨
  • “B”는 “Binary”가 아닌 “Balanced”

구조 및 특성

  • Root node, Leaf Node, Branch Node
  • Leaf Node에 데이터의 주소값이 존재
  • 인덱스의 키값은 정렬되어있음, 데이터 파일의 레코드는 정렬되어있지 않음

  • 키 추가/삭제/변경/검색
  • 영향을 미치는 요소
    • 인덱스 키 값의 크기
    • B-Tree 깊이
    • 선택도(기수성)
    • 읽어야 하는 레코드의 건수
  • 데이터 읽기
  • 정렬 및 스캔 방향

R-Tree 인덱스

전문 검색 인덱스

함수 기반 인덱스

멀티 밸류 인덱스

클러스터링 인덱스

유니크 인덱스

외래키

References

  • Real MySQL 8.0 (1권)