← 개념서태블릿/PC 버전
1과목 · 데이터 모델링의 이해·9

본질·인조 식별자와 인덱스 기초

식별자 전략 복습, 인덱스의 역할과 대표 유형, 설계 원칙을 정리합니다.

1. 본질 vs 인조 식별자 — 실무 기준

구분 설명
본질 업무에 존재하는 키 (사업자번호, 이메일)
인조 시스템 부여 순번/UUID

인조 식별자가 사실상 표준인 이유: 짧음·불변·의미없음·생성 빠름.

2. 인덱스란

특정 컬럼(들)의 빠른 탐색을 가능하게 하는 보조 자료구조. 책의 색인처럼 원본 데이터는 그대로 두고 정렬된 참조를 미리 유지.

유용한 순간

  • WHERE 필터
  • JOIN ON
  • ORDER BY / GROUP BY
  • 선택도(Selectivity)가 높은 컬럼

비용

  • 저장 공간
  • DML 시 인덱스 갱신
  • 잘못 만든 인덱스는 옵티마이저 혼란

3. 인덱스 유형

B-Tree (기본)

정렬된 키를 균형 트리로 유지. 범위·정렬 모두 효율적.

CREATE INDEX idx_emp_dept ON emp(dept_id);
CREATE INDEX idx_ord_cov  ON orders(customer_id, ordered_at DESC);

Bitmap

카디널리티 낮은 컬럼(성별, 상태)에 유리. DW에서 사용.

Hash

= 비교에 강함. 범위에는 약함.

함수 기반

표현식 결과에 인덱스.

CREATE INDEX idx_lower_email ON emp(LOWER(email));

4. 복합 인덱스와 선두 컬럼

(A, B, C)는 "A만" 또는 "A, B"엔 쓰이지만 "B만" 또는 "C만"엔 제한적. Left-most Prefix 규칙.

5. 커버링 인덱스

쿼리 필요 컬럼이 모두 인덱스에 있으면 테이블 읽지 않고 응답.

CREATE INDEX idx_cov ON orders(customer_id, ordered_at) INCLUDE (amount);

6. 설계 원칙

  1. WHERE/JOIN/ORDER BY 컬럼 우선.
  2. 카디널리티 낮으면 Bitmap/부분 인덱스.
  3. 자주 바뀌는 컬럼엔 최소화.
  4. 복합 인덱스는 선택성 높은 순서.
  5. 불필요한 인덱스는 삭제.

7. 자주 출제되는 포인트

  • 인조 식별자 권장 이유.
  • 인덱스 비용: 공간 + DML.
  • B-Tree vs Bitmap은 카디널리티가 키.
  • 선두 컬럼 규칙.
  • 함수 기반 인덱스가 필요한 표현식 WHERE.

8. 요약 체크리스트

  • 본질·인조 식별자를 비교한다.
  • 인덱스 득·실을 구분한다.
  • B-Tree와 Bitmap 적합 상황을 안다.
  • 복합 인덱스 선두 컬럼 규칙을 설명한다.