DB Index

최성원·2023년 10월 11일

백엔드 데브코스

목록 보기
4/6

DB Index

테이블에 대한 동작 속도를 높여주는 자료 구조

필요한 항목을 찾기 위해 테이블 전체를 탐색하지 않고 index 정보를 이용하여 자료의 빠른 검색을 가능하게 하는 기능

  • index가 항상 정렬된 상태를 유지하기 위해 삽입, 수정, 삭제 시에 추가적인 연산이 필요하다

자료구조

해시테이블

  • key - value 로 이루어진 형태로 값들을 저장
    • key = 컬럼값, value = 데이터의 위치
  • =(등호) 연산에는 특화되어 있지만 >, <(부등호) 연산에는 사용할 수 없음
  • 위의 단점으로 인해 잘 사용되지 않는다

B-tree

  • 모든 리프 노드들이 같은 레벨을 가질 수 있도록 자동으로 밸런스를 맞춰주는 트리
  • 정렬된 순서를 보장한다

B+tree

  • B-tree의 발전된 형태 -> 실제 DB에서 사용되고 있는 방식이다
  • 값들은 리프노드에만 저장되어 있고 각각의 리프는 LinkedList 로 연결되어 있다

장단점

장점

  • 테이블 조회 성능 향상 -> 엄청난 장점..!

단점

  • 인덱스 저장을 위한 추가 공간 필요 (DB의 약 10%)
  • 인덱스 관리를 위한 추가 작업 필요 (인덱스의 정렬 등)

사용하면 좋은 경우

  • 규모가 작지 않은 경우
    • 규모가 작은 경우는 index를 사용하지 않더라도 성능상에 문제가 생기지 않을 확률이 높다
  • 데이터의 중복도가 낮은 컬럼 (= 카디널리티가 높은 컬럼)
  • 삽입, 수정, 삭제가 자주 일어나지 않는 컬럼 (= 주로 조회만 하는 컬럼)

참고

https://www.youtube.com/watch?v=iNvYsGKelYs -> DB Index와 자료구조에 대해 잘 설명되어있음
https://mangkyu.tistory.com/286 -> B-Tree로 인덱스에 대해 이해하기
https://tecoble.techcourse.co.kr/post/2021-09-18-db-index/ -> DB Index 입문

profile
안녕하세요 백엔드 개발자입니다

0개의 댓글