25.01.02 TIL 인덱스

신성훈·2025년 1월 2일
0

TIL

목록 보기
111/162

1. 인덱스란?

데이터베이스에서 인덱스(Index)는 테이블의 데이터 검색을 빠르게 하기 위해 사용하는 자료구조입니다.
인덱스는 책의 목차처럼, 특정 데이터가 저장된 위치를 미리 알고 빠르게 접근할 수 있도록 돕습니다.


2. 인덱스의 구조

가장 일반적인 인덱스 구조는 B-TreeHash입니다.

  • B-Tree:
    • 데이터를 정렬된 상태로 유지
    • 범위 검색과 순차적인 데이터 검색에 적합
  • Hash:
    • 해시 함수로 데이터 위치를 계산
    • 정확한 키 검색(=)에 최적화, 범위 검색은 불가능

3. 인덱스의 동작 원리

  • 인덱스 생성: 테이블의 특정 열(Column)에 대해 인덱스를 생성
  • 데이터 검색:
    1. 먼저 인덱스를 탐색해 해당 데이터의 위치를 확인
    2. 해당 위치를 찾아가 데이터를 가져옴
  • 정렬: 일반적으로 인덱스는 정렬된 상태로 유지되어 검색 속도가 빠름

4. 인덱스의 장점과 단점

장점단점
데이터를 빠르게 검색할 수 있음데이터 삽입, 수정, 삭제 시 성능 저하
특정 열의 정렬된 결과를 효율적으로 가져올 수 있음추가적인 저장 공간 필요
중복 데이터 제거 및 고유성(Unique) 보장 가능너무 많은 인덱스는 오히려 성능을 저하시킬 수 있음

5. 인덱스의 종류

  1. 기본 인덱스(Primary Index):

    • 기본 키(Primary Key)에 자동으로 생성되는 인덱스
    • 중복이 허용되지 않으며 NULL 값을 가질 수 없음
  2. 보조 인덱스(Secondary Index):

    • 기본 키가 아닌 다른 열에 생성
    • 다수의 보조 인덱스를 생성할 수 있음
  3. 유니크 인덱스(Unique Index):

    • 중복을 허용하지 않는 인덱스
  4. 복합 인덱스(Composite Index):

    • 여러 열(Column)을 조합하여 생성
  5. 클러스터드 인덱스(Clustered Index):

    • 데이터 자체가 정렬된 형태로 저장됨
  6. 넌클러스터드 인덱스(Non-Clustered Index):

    • 데이터와는 별도로 인덱스가 저장됨

6. 인덱스 생성 방법 (SQL 예제)

인덱스 생성

CREATE INDEX user_name ON users(name);

유니크 인덱스 생성

CREATE UNIQUE INDEX email ON users(email);

인덱스 삭제

DROP INDEX user_name;

7. 인덱스를 사용할 때 주의사항

  1. 과도한 인덱스 생성:
    • 너무 많은 인덱스는 데이터 수정 시 성능을 저하시킴
  2. 빈번한 데이터 변경:
    • 인덱스가 자주 재정렬되어 성능에 부정적인 영향을 줄 수 있음
  3. 테이블 크기와 적합성:
    • 작은 데이터셋에서는 인덱스가 필요하지 않을 수 있음

8. 마무리

인덱스는 데이터베이스의 검색 성능을 획기적으로 향상시키는 중요한 도구지만 잘못 사용하면 데이터 처리 속도를 저하시킬 수 있다는 점을 배웠습니다.다양한 인덱스의 종류와 사용 사례를 공부하며 적재적소에 인덱스를 활용하는 것이 중요하다고 느꼈습니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글