Computer Science/데이터베이스

DB 스캔 종류와 mysql explain type 칼럼

하다보면 되겠지 2025. 4. 28. 00:18

DB 스캔 종류

FULL TABLE SCAN

  • 인덱스를 활용하지 않고 테이블을 처음부터 끝까지 전부 탐색하는 방식
  • 매우 비효율적이며 디스크 I/O의 비용이 많이 발생

 

INDEX FULL SCAN

  • 인덱스 테이블을 처음부터 끝까지 전부 탐색하는 방식
  • 실제 테이블보다 상대적으로 적은 양을 차지하므로 일반적으로 full table scan보다 효율적
  • 하지만 index full scan도 결국 인덱스 테이블 “전체”를 읽어야 함
  • B+ 트리에서 첫 번째 leaf 노드를 수직 탐색 후 나머지 leaf 노드에 대해 순차적으로 전체 탐색을 진행

 

INDEX UNIQUE SCAN

  • 조회하고자 하는 1건의 데이터를 단번에 찾아오는 경우
  • 즉 고유 인덱스(UNIQUE)나 PK를 사용해서 1건의 데이터만 조회한 경우에 해당
  • 인덱스를 사용하는 방식 중 가장 효율적인 스캔 방식

 

INDEX RANGE SCAN

  • 인덱스를 활용해 범위 형태의 데이터를 조회하는 경우
  • BETWEEN, 부등호(<, >, ≤, ≥), IN, LIKE이 이에 해당
  • 인덱스를 사용하기 때문에 기본적으로 효율적인 방식이나, 그 범위가 넓을 경우 성능이 저하됨

 

INDEX LOOSE SCAN

  • 인덱스에서 필요한 부분만 선택하여 스캔
  • index range scan처럼 넓은 범위에 전부 접근하지 않고, where 조건문을 기준으로 불필요한 데이터를 구분한 뒤 해당 인덱스 키는 무시

 

INDEX MERGE SCAN

  • 두 개 이상의 인덱스를 병합하여 검색
  • where 문의 조건 열이 서로 다른 인덱스에 존재할 때 사용됨
  • 물리적으로 존재하는 개별 인덱스를 각각 접근하므로 인덱스에 접근하는 시간이 오래 걸림
  • 따라서 보통 별개로 생성된 인덱스들을 하나의 인덱스로 통합하여 튜닝함


EXPLAIN Type 칼럼

스캔 방식과 맵핑

 


References