[DB] INDEX

handa·2024년 12월 4일
0
post-thumbnail

1. 인덱스의 개념

  • 정의 : 데이터베이스 테이블의 특정 컬럼에 대해 별도로 생성된 데이터 구조로, 해당 컬럼의 값을 기반으로 데이터를 빠르게 검색할 수 있습니다.
  • 역할 : 데이터 검색 시 테이블 전체를 스캔하지 않고도 원하는 데이터를 빠르게 찾을 수 있도록 지원합니다.

2. 인덱스의 주요 종류

  1. B-Tree 인덱스
    • 가장 일반적으로 사용되는 인덱스 유형.
    • 데이터를 정렬된 트리 구조로 저장하여 검색, 삽입, 삭제 시 효율적.
    • 등호(=), 범위(> , <) 연산에 적합.
  2. 해시 인덱스
    • 키-값 쌍을 기반으로 데이터 위치를 빠르게 찾음.
    • 등호(=) 연산에는 효율적이지만, 범위 검색에는 부적합.
  3. 비트맵 인덱스
    • 값의 종류가 적은 컬럼(예: 성별)에서 사용.
    • 각 값에 대해 비트맵을 생성하여 효율적으로 관리.
  4. Full-Text 인덱스
    • 텍스트 검색에 특화된 인덱스.
    • 문장이나 단어 단위의 검색에서 효과적.
  5. 클러스터드 인덱스(Clustered Index)
    • 테이블의 데이터 자체가 인덱스에 맞게 정렬된 경우.
    • 테이블 당 하나만 생성 가능.
  6. 비클러스터드 인덱스(Non-clustered Index)
    • 테이블의 데이터와 별도로 저장된 인덱스.
    • 여러 개를 생성할 수 있음.

3. 인덱스의 장점

  • 빠른 데이터 검색 : 테이블 전체를 스캔하지 않고도 데이터를 검색 가능.
  • 효율적인 쿼리 성능 : WHERE, JOIN, ORDER BY, GROUP BY 절과 같은 연산에서 성능을 개선

4. 인덱스의 단점

  • 추가적인 저장 공간 필요 : 인덱스를 유지하기 위해 별도의 디스크 공간이 필요.
  • 쓰기 작업의 속도 저하 : 데이터 삽입, 수정, 삭제 시 인덱스를 갱신해야 하므로 성능이 떨어질 수 있음.
  • 과도한 인덱스 사용 : 너무 많은 인덱스를 생성하면 관리가 어려워지고, 성능이 저하될 수 있음.

5. 인덱스를 사용할 때 고려사항

  1. 자주 조회되는 컬럼에 인덱스를 생성.
  2. 데이터의 분포도를 고려하여 인덱스를 설계.
  3. 읽기 작업과 쓰기 작업의 비중을 분석.
  4. 데이터베이스 시스템(MySQL, PostgreSQL 등)의 특성을 반영.

인덱스를 효율적으로 설계하면 데이터베이스의 성능을 크게 향상시킬 수 있습니다. 하지만, 남용하면 오히려 성능에 악영향을 미칠 수 있으므로 적절히 활용해야 합니다.


profile
진짜 해보자

0개의 댓글