DB Index

오성인·2023년 6월 21일
0

인덱스란?

  • 인덱스란 백과사전과 유사하다. 또 우리가 흔히 겪어본 Array의 인덱스와도 비슷하다.
  • DB의 모든 데이터를 조회하면 시간이 오래 걸리기 때문에 자주 조회하는 속성들을 복사해서 정렬된 순서를 가지게 따로 저장해준다. -> 정렬된 순서가 있다면? 이분 탐색으로 절반씩!
  • 인덱스는 조회 성능을 매우 올려주지만 반대로 정렬된 값에 새로운 데이터를 추가하거나, 삭제 변경할 때 그만큼 속도가 느리다. 상황 봐가며 쓰자.

인덱스의 자료구조

  • B+-Tree 인덱스 알고리즘
    - https://www.youtube.com/watch?v=iNvYsGKelYs (설명 미침)
    - B-Tree!
    - B+Tree!
  • Hash 인덱스 알고리즘
    - Hash를 통한 고유값 지정 -> 조회 시에 O(1)
    -> 그러나 범위 검색 시 그 역할을 하지 못함.

클러스터 인덱스

  • 클러스터드 인덱스
    - 테이블 당 한 개만 생성될 수 있다. (PRKEY가 항상 자동으로 클러스터드 인덱스)
    물리적으로 하나로 묶여 있다! 진짜로 순서대로야!
  • 넌 클러스터드 인덱스
    - 테이블당 여러 개 생성 가능하며 물리적이지 않고, 링크드 리스트 처럼 위치 값을 기반으로 다음 노드를 가르킨다. 물리적으로는 진짜 순서대로가 아니야!

Composite Index

  • 여러 개의 컬럼 조합으로 생성된 인덱스

  • AND 조건으로 여러 컬럼이 동시에 조회될 때 사용하는 것이 좋다. 여러 컬럼을 조회하는 작업이 자주 발생하는 것에 대해 적용하는 것이 좋아 보인다.

  • 느낀점으로 조회의 성능 개선은 주로 캐시 마냥 변경이 적고, 유니크한 값들에서 이루어지는 것 같다.

profile
기여하는 개발자

0개의 댓글