티스토리 뷰

DB/DB

<DB> 커버링 인덱스란?

면목동인간 2026. 6. 14. 00:26

커버링 인덱스란?

 커버링 인덱스란 쿼리에 필요한 모든 칼럼을 포함하고 있는 인덱스를 의미한다. 예를 들어 책의 맨 뒤의 원하는 키워드에서 찾은 후 (1단계) 다시 그 페이지로 넘어가서 내용을 읽는(2단계)가 아닌 1단계에서 처리를 한다.

커버링 인덱스 적용 전

 아래는 price만 인덱스가 걸려 있고, 그 상태에서 item_id, price, item_name을 SELECT 하는 쿼리를 실행했다고 가정하였다.

SELECT item_id, price, item_name FROM items WHERE price BETWEEN 50000 AND
100000;

김영한의 실전 데이터베이스 기본편/인프런

 위의 쿼리를 분석해보면 인덱스에서 price 조건에 맞는 행의 item_id 5개를 찾았지만, item_name도 추가로 조회하기 때문에 원본 테이블에 5번 접근(5번 랜덤 I/O 발생)하여 item_name을 가져와야 한다. 위의 인덱스에는 item_name 포함되지 않기 때문에 원본 테이블을 무조건 접근해야 한다.

커버링 인덱스 적용 후

 앞서 위에 price만 적용된 인덱스 말고 item_name까지 포함하는 인덱스가 걸려있고 위와 똑같이 SELECT 하는 쿼리를 실행했다고 가정하였다.

김영한의 실전 데이터베이스 기본편/인프런

 위의 쿼리를 분석해보면 인덱스만 읽고 끝나므로, 원본 테이블 접근을 위한 랜덤 I/O가 완전히 사라져 훨씬 빠르고 효율적으로 동작한다.

장점

 1. 디스크 I/O 감소

 -> 일반 인덱스: 인덱스 읽기+테이블 읽기 이지만, 커버링 인덱스: 인덱스만 읽기 이므로 랜덤 I/O가 크게 감소한다.

 2. 응답 속도 향상

 -> 수백만 건 이상의 테이블에서는 체감 성능 차이가 상당할 수 있다.

단점

 1. 인덱스 크기 증가

 -> 커버링을 위해 칼럼을 많이 넣으면 인덱스 크기가 증가한다.

 2. INSERT 성능 저하

 -> 새 데이터 입력 시 원본 테이블뿐 아니라 인덱스도 갱신해야 한다. 인덱스가 크고 많을수록 INSERT 느려진다.

 3. UPDATE 비용 증가

 -> 인덱스 컬럼 수정 시 인덱스 재구성이 발생한다.

언제 사용하는가?

  • 조회가 압도적으로 많은 서비스
  • 대용량 테이블
  • 자주 실행되는 핵심 쿼리
  • API 목록 조회
  • 페이징 조회
  • 통계 조회

정리

 커버링 인덱스는 "쿼리에 필요한 모든 칼럼이 인덱스 안에 있어 테이블 접근 없이 인덱스만으로 결과를 반환하는 최적화 기법"이다. 조회 성능은 크게 향상되지만, 인덱스 크기 증가와 쓰기 성능 저하라는 비용을 함께 고려해야 한다.

 


본 포스팅은 “김영한의 실전 데이터베이스 기본편/인프런”를 학습한 내용을 정리한 것

 

'DB > DB' 카테고리의 다른 글

<DB> 인덱스란?  (0) 2026.06.08
<DB> 뷰(View)이란?  (0) 2026.03.14
댓글
최근에 올라온 글
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
Total
Today
Yesterday