DB INDEX에 대해서 알아보자

hisol·2025년 10월 6일
  1. DB Index란?

인덱스(Index) 는 테이블에서 자주 사용하는 컬럼의 값과 그 위치를 따로 저장해두는 구조입니다.
즉, 원본 테이블의 ‘검색용 사본’이라고 볼 수 있습니다.


  1. 인덱스의 필요성

인덱스가 없을 경우, DB는 데이터를 찾기 위해 테이블 전체를 처음부터 끝까지 탐색합니다.

이를 Full Scan이라고 하며, 데이터가 많을수록 검색 속도가 느려집니다.

반면 인덱스를 사용하면, 테이블 전체를 읽지 않고 필요한 데이터의 위치를 바로 찾아 빠르게 조회할 수 있습니다.

따라서 인덱스는 검색 성능 향상에 큰 도움을 줍니다.


  1. 인덱스의 단점

검색 속도는 빨라지지만, 인덱스가 걸린 컬럼에 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 작업이 발생하면 DB는 원본 데이터뿐 아니라 인덱스 정보도 함께 갱신해야 합니다.

즉, 데이터 변경이 자주 일어나는 테이블에서는 오히려 성능이 저하될 수 있습니다.

따라서 인덱스는 조회가 많고 변경이 적은 컬럼에 사용하는 것이 효율적입니다.


  1. 복합 인덱스 (Composite Index)

여러 컬럼을 함께 검색해야 할 경우, 두 개 이상의 컬럼을 조합해 하나의 인덱스를 만들 수 있습니다.

이를 복합 인덱스(Composite Index) 라고 합니다.


  1. 카디널리티 (Cardinality)

카디널리티(Cardinality) 란 한 컬럼이 가진 고유 값의 개수를 의미합니다.

구분설명예시
카디널리티 높음값의 중복이 적고, 고유 값이 많음주민등록번호, 이메일, ID
카디널리티 낮음값의 중복이 많고, 고유 값이 적음성별, 여부(Y/N), 지역 코드
인덱스 효율성카디널리티가 높을수록 인덱스 효율이 좋음고유 값이 많은 컬럼일수록 검색 분류 효율↑
주의사항사용 빈도가 낮은 컬럼은 카디널리티가 높아도 인덱스 비추천출판일, 등록일 등
•	중복이 적을수록(고유 값이 많을수록) 카디널리티가 높습니다.
•	카디널리티가 높은 컬럼일수록 인덱스 효율이 좋습니다.

하지만 단순히 카디널리티가 높다고 해서 무조건 인덱스를 걸 필요는 없습니다.

조회 빈도(활용도) 가 낮다면 인덱스를 걸어도 성능 개선 효과가 없습니다.(ex 출판일)


  1. 정리
항목장점단점적합한 경우
인덱스검색 속도 향상데이터 변경 시 성능 저하조회 위주 테이블
복합 인덱스다중 컬럼 검색 최적화인덱스 크기 증가WHERE 조건 컬럼이 2개 이상일 때
카디널리티인덱스 효율 판단 기준중복 많으면 효율 저하고유 값이 많은 컬럼 우선

0개의 댓글