데이터베이스 인덱스

2025. 11. 10. 23:02·TIL
반응형

데이터베이스 인덱스란?

데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 ( 백과사전의 색인과 같음 )

저장되는 컬럼의 값을 사용해서 항상 정렬된 상태를 유지함 (이로 인해 insert, update, delete의 성능이 안 좋아짐)

장점

테이블을 조회하는 속도와 성능을 향상시킬 수 있음

시스템 부하를 줄일 수 있음

단점

DB의 약 10%가량 저장공간이 필요

인덱스 관리(정렬된 상태)를 위해 추가 작업 필요

잘못 사용하는 경우 성능이 저하될 수 있음(CREATE, DELETE, UPDATE가 빈번한 경우)

인덱스를 사용하면 좋은 경우

규모가 작지 않은 경우

join이나 where, order by에 자주 사용되는 컬럼

데이터의 중복도가 낮은 컬럼

인덱스의 자료구조

대표적으로는 해시 테이블과 B+Tree가 있음

해시테이블

key와 value를 한 쌍으로 데이터를 저장하는 자료 구조

(key, value)로 쌍을 표현 - key값을 이용해서 대응되는 value값을 구하는 방식

평균적으로 O(1)이라는 매우 빠른 시간안에 데이터를 탐색할 수 있지만 해시 충돌이 생길 수 있음

B+Tree

B-Tree의 변형구조로 B-Tree의 단점(데이터 한 개의 검색은 효율적이지만 모든 데이터를 순회하는데는 비효율적임)을 개선시킨 자료구조

어떻게 개선시켰는가?

leaf node에만 데이터를 저장, leaf node가 아니면 자식 포인터만 저장함

데이터가 저장된 leaf node들은 서로 Linked list로 연결되어 있음

leaf node에만 데이터가 저장되어 있고 Linked list로 연결되어 있어서 모든 데이터를 순회할 때의 비효율을 해결함

하지만, B+Tree는 어느 경우에서라도 특정 key에 접근하기 위해서는 leaf node까지 가야한다는 단점도 가지고 있음

참고

https://mangkyu.tistory.com/96

https://nohriter.tistory.com/153

매일메일

반응형

'TIL' 카테고리의 다른 글

Redis가 싱글 스레드로 만들어진 이유  (0) 2026.02.12
[JAVA] Scanner vs BufferedReader  (0) 2025.11.06
Entity Manager 엔티티 매니저  (0) 2025.11.04
분산 트랜잭션에서 일관성을 보장하는 방법  (0) 2025.09.29
최종적 일관성  (0) 2025.09.26
'TIL' 카테고리의 다른 글
  • Redis가 싱글 스레드로 만들어진 이유
  • [JAVA] Scanner vs BufferedReader
  • Entity Manager 엔티티 매니저
  • 분산 트랜잭션에서 일관성을 보장하는 방법
시시응
시시응
시시응 블로그
  • 시시응
    시시응응
    시시응
  • 전체
    오늘
    어제
    • 분류 전체보기 (139)
      • KT AIVLE (31)
      • 구름 PROFECT- 클라우드엔지니어 (2)
      • 대외활동 (32)
        • 사회리더 대학생 멘토링 (0)
        • 22 하반기 코드클럽 (7)
        • 23 상반기 코드클럽 (9)
        • 1784 스쿨혁명 (15)
        • 멋쟁이 사자처럼 (1)
      • 프로젝트 (3)
        • 캡스톤 (3)
      • study (1)
        • 데이터분석 (1)
      • 코딩테스트 (52)
        • 프로그래머스 (32)
        • 백준 (17)
        • 알고리즘 (2)
        • 자료구조 (1)
      • IT (7)
        • Backend (2)
        • CS (0)
        • Git (3)
        • 개발환경 (2)
      • TIL (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    소프트웨어야놀자
    네이버커넥트재단
    파이썬
    코드클럽한국위원회
    프로그래머스
    코테
    1784스쿨혁명
    Lv1
    교육봉사
    KT
    대외활동
    코딩테스트
    코드클럽
    playsw_mentor
    AIVLE
    대학생
    에이블스쿨
    KT에이블스쿨
    Python
    codeclub_south_korea
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
시시응
데이터베이스 인덱스
상단으로

티스토리툴바