인덱스(Index)_(1)

추성결·2024년 6월 10일
0

인덱스(Index)란?

  • 인덱스는 DB의 데이터에 대한 검색 속도를 높여주는 자료 구조이다.
  • DB 내 저장된 데이터의 주소를 가지고 있는 Index Table을 따로 만들어 검색 속도를 높여준다.

동작 원리

  • 일반적으로 사용되는 자료구조는 B+Tree이다.(이해를 돕기위해 B-Tree를 먼저 보고오는 것을 추천한다.)

B+Tree

리프 노드: 실제 데이터가 저장되는 노드
논리 노드: 리프 노드까지의 경로 역할을 하는 노드
루트 노드: 경로의 출발점 노드

인덱스 장점

  • DB데이터의 주소를 갖고있으므로 원하는 데이터를 빠르게 찾을 수 있다.

인덱스 단점

  • 인덱스로 지정한 Colum을 수정, 업데이트, 삭제 등을 진행할 시, 인덱스 테이블과 데이터 테이블 두가지를 수정해야한다. 즉 SELECT(조회)를 제외한 INSERT(삽입), UPDATE(수정), DELETE(삭제) 성능이 좋지 못하다.
  • 인덱스 테이블을 따로 저장하기에, 추가 저장 공간이 필요하다.

결론

인덱스는 다음과 같은 상황에서 사용하는 것이 좋다.

  • 데이터 양이 적지 않는 테이블

  • INSERT/UPDATE/DELETE가 거의 없는 Colum

  • JOIN/WHERE/ORDER BY에 자주 사용되는 Colum

  • 데이터 중복도가 낮은 Colum


팀 프로젝트 "Toogether"에서 Calendar내 일정 조회할 때, 지금 현재는 캘린더의 모든 일정을 불러오니, CalendarId를 인덱스로 지정하고 조회할 때, 성능이 더 좋아지지 않을까?(물론 현재는 데이터 양이 극히 적지만) 내일 한번 테스트한 후 포스팅해야할 것같다.

0개의 댓글