저장소 logo 저장소

1. Index를 사용하기 좋은 Column

Index는 조건 검색이 자주 발생하는 컬럼에 사용하는 것이 효과적.

특히 다음과 같은 특징을 가진 컬럼이 Index에 적합.

기준 적합성
카디널리티 (Cardinality) 높을수록 적합 (데이터 중복이 적을수록 좋음)
선택도 (Selectivity) 높을수록 적합 (검색 범위가 좁을수록 좋음)
조회 활용도 WHERE 조건에서 자주 사용될수록 적합
수정 빈도 낮을수록 적합

2. Index 효과적으로 사용하는 방법

WHERE 절에 자주 사용되는 Column

SELECT WHERE 조건에서 자주 검색되는 컬럼에 Index 적용 시
검색 성능 향상 효과.


데이터 수정 빈도가 낮은 Column

Index가 존재하면 다음 작업 수행 시 인덱스도 함께 갱신 필요.

이 과정에서 B+Tree 구조 갱신 비용 발생.

따라서 데이터 변경이 잦은 컬럼에는 Index 비효율 발생 가능.


카디널리티가 높은 Column

카디널리티란 컬럼 값의 중복 정도를 의미.

예시 컬럼 카디널리티
사용자 ID 높음
이메일 높음
성별 낮음

카디널리티가 높은 컬럼일수록 검색 범위 축소 효과 발생.


데이터 양이 많은 Table

데이터 양이 많을수록

따라서 대용량 테이블에서 Index 효과 극대화.


JOIN에 자주 사용되는 Column

JOIN 조건으로 자주 사용되는 컬럼에 Index 생성 시


과도한 Index 생성 주의

Index는 많을수록 좋은 구조가 아님.

Index 증가 시

따라서 필요한 컬럼에만 Index 생성 필요.


3. 카디널리티 vs 선택도

개념 설명
Cardinality 컬럼 값의 고유 개수
Selectivity 특정 값을 선택했을 때 반환되는 데이터 비율

예시

컬럼 특징
사용자 ID 카디널리티 높음 / 선택도 높음
성별 카디널리티 낮음 / 선택도 낮음

Index는 일반적으로 카디널리티가 높고 선택도가 높은 컬럼에서 효과적.


핵심 정리

Index 적용이 좋은 Column

  • WHERE 조건에서 자주 사용되는 컬럼
  • 카디널리티가 높은 컬럼
  • 데이터 변경이 적은 컬럼
  • JOIN에 자주 사용되는 컬럼

Index 적용이 좋지 않은 Column

  • 데이터 중복이 많은 컬럼 (예: 성별)
  • 데이터 변경이 매우 잦은 컬럼

« Index
B+Tree Index vs Hash I... »