[인덱스 용어정리] 클러스터 인덱스 ,보조인덱스, 단일 인덱스,복합 인덱스, 커버링 인덱스

2025. 7. 27. 11:42·공부일기../DataBase

✅ 용어 정리 요약

구분 개념 설명 설정방식
클러스터 인덱스 저장 방식 PK 기준으로 테이블 자체가 정렬된 구조 (MySQL InnoDB 기본) PK 지정하면 자동 생성
보조 인덱스 인덱스 위치 PK 외 컬럼에 수동으로 생성한 인덱스 (실제 데이터 X) CREATE INDEX 문으로 직접 생성
단일 인덱스 인덱스 구성 한 개 컬럼으로 만든 인덱스 CREATE INDEX ON 테이블(컬럼)
복합 인덱스 인덱스 구성 여러 개 컬럼으로 만든 인덱스 CREATE INDEX ON 테이블(컬럼1, 컬럼2)
커버링 인덱스 쿼리 최적화 결과 선택한 컬럼이 전부 인덱스에 포함되어 테이블 접근이 필요 없는 상황 단일 or 복합 인덱스를 잘 설계했을 때 "결과적으로" 되는 것

✅ 핵심 관계 도식

              ┌────────────────────────┐
              │      인덱스의 종류      │
              └────────────────────────┘
                       ▲
       ┌──────────────┼──────────────┐
       │                              │
클러스터 인덱스 (PK)         보조 인덱스 (일반 인덱스)
       │                              │
       ▼                              ▼
  테이블 자체 정렬됨        실제 데이터 없음 (PK만 가짐)

   ▶ 단일/복합 인덱스는 둘 다 가능  
   ▶ 커버링 인덱스는 "단일 또는 복합 보조 인덱스"가 쿼리에 완벽히 매치될 때

 


1. 클러스터 인덱스

CREATE TABLE product (
  id INT PRIMARY KEY,     -- PK = 클러스터 인덱스
  name VARCHAR(100),
  price BIGINT
);
  • id 기준으로 테이블이 정렬되어 저장됨
  • SELECT * FROM product WHERE id = 10 → 곧바로 데이터 접근

2. 보조 인덱스 (단일)

CREATE INDEX idx_name ON product(name);
  • name만 인덱싱
  • 인덱스 구조: name → id
  • 데이터를 가져오려면 id로 다시 테이블 접근 필요

3. 보조 인덱스 (복합)

CREATE INDEX idx_name_price ON product(name, price);
  • 인덱스 구조: name, price → id
  • WHERE name = 'Shirt' AND price = 10000 같이 쿼리하면 커버링 인덱스가 될 수 있음

4. 커버링 인덱스란?

-- 커버링 인덱스 상황
SELECT price FROM product WHERE name = 'Shirt';
-- 인덱스 idx_name_price(name, price)만 보고 끝냄!

❗ SELECT 컬럼들 + WHERE 조건 컬럼들이 모두 인덱스에 포함돼야 커버링 인덱스 적용 가능


✅ 정리

용어 포인트 포함관계
클러스터 인덱스 PK 지정 시 자동 테이블 = 인덱스
보조 인덱스 PK 외 수동 생성 인덱스 값 + PK 저장
단일/복합 인덱스 인덱스 대상 컬럼 수 차이 클러스터/보조 둘 다 가능
커버링 인덱스 결과적으로 쿼리가 인덱스만 보고 끝나는 경우 단일/복합 보조 인덱스에서 발생

커버링 인덱스는 단일/복합 인덱스 중 쿼리에 딱 맞는 경우

보조 인덱스는 PK만 저장하니까 테이블로 다시 가야 하지만
클러스터 인덱스는 테이블 그 자체니까 빠르게 직접 접근 가능

단일/복합은 구성 방식의 차이일 뿐이고, 커버링은 "결과"

 

'공부일기.. > DataBase' 카테고리의 다른 글

[DB] 페이지네이션 종류 (커서 , 오프셋)  (0) 2025.11.30
[mySql 인덱스 설계] 기본원칙, 설계방법 , 주의사항!!!  (3) 2025.07.28
[DB 인덱스 개념 정리] B+Tree, 클러스터드 인덱스, 카디널리티, 커버링 인덱스, 디스크와 메모리  (2) 2025.07.27
[ERD] 이커머스 ERD 설계 과정: 정규화, 관계 설계, 제약 조건  (1) 2025.07.18
[MySql] 컬럼 일련번호 자동 증가 AUTO_INCREMENT  (0) 2025.06.20
'공부일기../DataBase' 카테고리의 다른 글
  • [DB] 페이지네이션 종류 (커서 , 오프셋)
  • [mySql 인덱스 설계] 기본원칙, 설계방법 , 주의사항!!!
  • [DB 인덱스 개념 정리] B+Tree, 클러스터드 인덱스, 카디널리티, 커버링 인덱스, 디스크와 메모리
  • [ERD] 이커머스 ERD 설계 과정: 정규화, 관계 설계, 제약 조건
s0-0mzzang
s0-0mzzang
공부한것을 기록합니다...
  • s0-0mzzang
    승민이의..개발일기..🐰
    s0-0mzzang
  • 전체
    오늘
    어제
    • 전체~ (108)
      • 마음가짐..! (10)
      • 공부일기.. (76)
        • weekly-log (6)
        • Spring (19)
        • Java (18)
        • DataBase (10)
        • git (2)
        • JPA (6)
        • kafka (1)
        • Backend Architecture (3)
        • Troubleshooting (삽질..ㅋ) (2)
        • Cloud (1)
        • Docker (2)
        • 알고리즘 (1)
        • 리액트 (2)
        • Infra (3)
      • 하루일기.. (22)
        • 그림일기 (8)
        • 생각일기 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    TDD
    JPA
    인프라 기초
    리팩토링
    ERD
    ADC 환경
    spring boot
    swagger
    SpringBoot
    항해99
    스프링부트
    자바
    MySQL
    spring
    Paging
    StringTokenizer
    항해플러스
    React
    BufferedReader
    다짐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s0-0mzzang
[인덱스 용어정리] 클러스터 인덱스 ,보조인덱스, 단일 인덱스,복합 인덱스, 커버링 인덱스
상단으로

티스토리툴바