본문 바로가기
기타/취준 기록

[기술 면접 준비] 데이터베이스 인덱스(Index) 개념과 활용

by 옹쑥이 2024. 11. 21.

인덱스란?

인덱스는 데이터베이스 테이블의 특정 컬럼에 대해 별도로 정렬된 데이터 구조를 유지하여 검색 속도를 높입니다. 이를 책의 목차에 비유하면 이해하기 쉽습니다:

  • 데이터 = 책의 내용
  • 인덱스 = 책의 목차
  • 물리적 주소 = 책의 페이지 번호

인덱스는 데이터를 정렬하여 조건에 맞는 데이터를 빠르게 찾을 수 있도록 돕습니다.


인덱스의 장점과 단점

장점

  1. 검색 속도 향상
    • 데이터를 정렬된 상태로 유지하여 조건 검색(WHERE, ORDER BY, JOIN)을 더 빠르게 수행합니다.
  2. 대규모 데이터 처리
    • 대량의 데이터에서 특정 조건을 만족하는 레코드를 빠르게 찾아냅니다.

단점

  1. 저장 성능 저하
    • 새로운 데이터를 추가하거나 삭제, 수정하는 경우, 인덱스를 다시 정렬해야 하므로 쿼리 실행 속도가 느려질 수 있습니다.
  2. 저장 공간 추가 필요
    • 인덱스는 전체 데이터베이스의 약 10%에 해당하는 추가 저장 공간이 필요합니다.
  3. 유지 비용 증가
    • 자주 변경되는 데이터를 가진 컬럼에 인덱스를 사용할 경우, 인덱스를 유지하는 비용이 커져 성능 저하를 초래할 수 있습니다.

인덱스 사용이 효율적인 경우

인덱스는 아래와 같은 경우에 유용하게 사용됩니다:

  1. 규모가 큰 테이블
    • 데이터가 많은 테이블에서 특정 조건에 맞는 데이터를 빠르게 검색할 때 유용합니다.
  2. 중복도가 낮은 컬럼
    • 데이터의 range가 넓고 중복도가 낮은 컬럼에 적합합니다. (예: 고유 ID, 날짜 컬럼)
  3. 조회가 많은 컬럼
    • 자주 조회되거나 정렬된 상태가 중요한 컬럼에 적합합니다. (예: WHERE, ORDER BY, JOIN 연산에서 사용)

인덱스 사용이 비효율적인 경우

아래와 같은 경우에는 인덱스 사용이 오히려 성능을 저하시킬 수 있습니다:

  1. 선택성이 낮은 컬럼
    • 중복도가 높은 컬럼(예: 성별, 참/거짓)에서 인덱스를 사용하는 경우, 많은 데이터를 포인트하게 되어 효율성이 떨어집니다.
  2. 자주 변경되는 컬럼
    • 업데이트, 삭제, 삽입 작업이 빈번한 컬럼에서는 인덱스 유지 비용이 커져 성능이 저하될 수 있습니다.

인덱스의 동작 방식

  1. 정렬된 상태 유지
    • 인덱스는 테이블의 데이터를 정렬된 상태로 유지합니다. 이를 통해 특정 조건에 맞는 데이터를 빠르게 검색할 수 있습니다.
  2. 검색 최적화
    • 쿼리가 실행되면 데이터베이스는 인덱스를 사용해 검색 범위를 축소합니다.
  3. 데이터 수정 시 추가 작업
    • 데이터를 삽입, 수정, 삭제할 때 인덱스를 재정렬하는 작업이 필요합니다. 이로 인해 쓰기 성능은 저하될 수 있습니다.

인덱스 활용의 핵심 포인트

  1. 검색 성능 향상
    • 인덱스는 데이터의 검색 속도를 대폭 개선합니다. 특히 WHERE, ORDER BY, JOIN 조건에서 효과적입니다.
  2. 저장 성능의 희생
    • 인덱스는 저장 성능을 희생하여 검색 속도를 높이는 기능입니다.
    • 인덱스를 생성하기 전, 컬럼의 데이터 사용 빈도와 변경 빈도를 고려해야 합니다.

정리하며

인덱스는 데이터 검색 속도를 높이는 데 있어 강력한 도구입니다. 그러나 사용 조건과 데이터베이스의 특성을 잘 분석하여 적절한 컬럼에만 인덱스를 적용해야 합니다. 잘못된 인덱스 사용은 성능 저하를 초래할 수 있으므로, 항상 검색 성능과 저장 성능 간의 균형을 고려하는 것이 중요합니다.