ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.