-
[MySQL] 실행 계획 > Extra 컬럼 > 커버링 인덱스 (Using Index)Study 2025. 3. 26. 00:37
- 데이터 파일을 전혀 읽지 않고 인덱스만으로 쿼리가 처리되는 것
- 실행 계획 확인 시 Extra 컬럼에 "Using Index"가 표시됨
- 이점
- 인덱스를 이용해 처리하는 쿼리에서 가장 큰 부하를 차지하는 부분은 인덱스 검색에서 일치하는 키 값들의 레코드를 읽기 위해 데이터 파일을 검색하는 작업임
- 커버링 인덱스로 처리될 경우 데이터 파일을 읽지 않아도 되기 때문에 쿼리 처리 성능 향상됨
- 주의) 무조건 커버링 인덱스가 정답은 아니다
- 커버링 인덱스로 처리하기 위해 인덱스에 많은 컬럼을 추가하면 인덱스의 크기가 커짐
- 이로인해 메모리 낭비가 심해지고, 레코드를 저장하거나 변경하는 작업이 매우 느려질 수 있음
예시)
- InnoDB의 모든 테이블은 클러스터링 인덱스로 구성돼 있음
- InnoDB 테이블의 모든 세컨더리 인덱스는 데이터 주소값으로 PK 값을 저장하고 있음
- 즉, InnoDB 테이블에서는 특정 컬럼만으로 인덱스를 만들어도 결국 그 인덱스에 PK 컬럼이 같이 저장되는 효과를 냄
- 이러한 클러스터링 인덱스 특성 때문에 '커버링 인덱스'로 처리될 가능성이 높아짐
// -- emp_no가 PK, first_name 컬럼에 대한 인덱스 존재 SELECT emp_no, first_name FROM employees WHERE first_name BETWEEN 'Hello' AND 'Bello';
- WHERE 조건에 따라 first_name 컬럼의 인덱스를 이용해 일치하는 레코드를 검색함
- emp_no는 해당 테이블의 PK이기 때문에 이미 인덱스에 포함돼 있어 데이터 파일을 읽지 않아도 됨
'Study' 카테고리의 다른 글
[MySQL] 인덱스 > 클러스터링 인덱스 (0) 2025.03.26 [MySQL] 인덱스 (0) 2025.03.25 - 데이터 파일을 전혀 읽지 않고 인덱스만으로 쿼리가 처리되는 것