커버링 인덱스란?
쿼리를 구성하는 컬럼이 모두 인덱스 컬럼일 경우, 이때 해당 인덱스를 커버링 인덱스라고 합니다.
예시 )
-- IDX_TEMP -> id, column1, column2
SELECT id, column1, column2
FROM TB_TEMP;
SELECT id, column1
FROM TB_TEMP
WHERE id = '1'
-- 여기에 인덱스 외에 다른 컬럼을 사용하게 된다면 커버링 인덱스가 아닙니다.
-- 이 경우에 EXPLAIN 조회 시, Extra에 Using index가 조회됩니다
풀 인덱스 스캔이란?
말 그대로 인덱스 전체를 스캔한다는 의미입니다.
풀 테이블 스캔 보다는 부하가 덜하지만, 그래도 인덱스 전체를 스캔하기 때문에 부하가 낮지는 않습니다.
풀 인덱스 스캔이 발생할 수 있는 경우
1. 쿼리에 조건이 없고, 커버링 인덱스일 경우
2. ORDER BY, GROUP BY에 인덱스가 사용 되는 경우
위의 둘 다 기본적으로는 풀 인덱스 스캔을 통해 조회 하는 것이 낫다는 판단 아래에 진행이 됩니다.
왜냐면 테이블보다는 인덱스가 작기 때문에, 그만큼 비용이 덜 들어가기 때문이죠.
물론 위의 경우라도 100퍼센트 풀 인덱스 스캔이 발생하는 것은 아닙니다.
→ 풀 인덱스 스캔 발생 케이스는 더 많은 것으로 보이지만, 개념적인 이해가 쉬운 케이스라서 적어봤습니다.
인덱스 전용 스캔
인덱스 전용 스캔이란, 쿼리의 구성이 테이블에 접근할 필요가 없을 때 인덱스만 읽어서 쿼리를 끝내는 것입니다.
쿼리의 조건이 인덱스를 사용하고, 인덱스가 커버링 인덱스일 경우 테이블에 접근하지 않고 인덱스만 조회하여 쿼리를 끝냅니다.
→ 풀 인덱스 스캔과는 다릅니다. 인덱스 전용 스캔은 인덱스를 사용함과 동시에, 테이블 접근 필요가 없을 경우 입니다.
'DB' 카테고리의 다른 글
| Percona MySQL 감사로그 설정 (0) | 2025.12.28 |
|---|---|
| Percona MySQL TDE 설정 (0) | 2025.12.28 |
| Database Table Lock (0) | 2025.04.14 |
| [MySQL] 테이블 파티셔닝 (0) | 2025.04.14 |