[DB] 테이블 데이터 스캔 방식

공수정·2022년 12월 12일
0

database

목록 보기
1/1
post-custom-banner

스캔 종류

  • 테이블 스캔 : 테이블 데이터로 직접 접근
  • 인덱스 스캔 : 인덱스를 통해 테이블 데이터에 접근

테이블 스캔

테이블 풀 스캔 ( Table Full Scan )

  • 테이블에 포함된 레코드를 처음부터 끝까지 읽어들임
  • where 조건문에 기준으로 활용할 인덱스가 없는 경우
  • 대량의 데이터의 접근시 테이블 풀 스캔을 쓰면, 인덱스를 통한 랜덤 엑세스가 발생하지 않는 장점

인덱스 스캔

인덱스 풀 스캔 ( Index Full Scan )

  • 인덱스만 풀 스캔해 원하는 데이터를 가져오는 것
  • 인덱스는 테이블의 일부 데이터를 사용
  • 검색 되는 데이터 극히 일부면 좋음

인덱스 범위 스캔 ( Index Range Scan )

  • 인덱스를 범위 기준으로 스캔한 뒤 스캔 결과를 토대로 테이블에 접근( BETWEEN ~ AND, LIKE, < 등을 사용시 )
  • 좁은 범위로는 좋지만 넓은 범위로는 비효율적

인덱스 고유 스캔 ( Index Unique Scan )

  • 수직적 탐색만으로 찾는 방식, 기본키나 고유 인덱스로 테이블에 접근( = 사용시 )
  • 인덱스를 사용하는 방식 중 가장 효율적

인덱스 루스 스캔 ( Index Loose Scan )

  • 인덱스에서 필요한 부분만 선택하여 스캔하는 방식, where 조건문을 기준으로 불필요한 인덱스 키는 무시 ( GROUP BY, MAX(), MIN() 함수 포함 시 )

인덱스 병합 스캔 ( Index Merge Scan )

  • 테이블 내에 생성되 인덱스를 통합하여 스캔하는 방식
  • WHERE문의 조건 열이 서로 다른 인덱스에 존재할 때 사용됨.
  • 인덱스 병합 스캔은 물리적으로 존재하는 개별 인덱스를 각각 접근

index fast full scan

  • index full scan 보다 빠름, 인덱스 구조를 따라서 스캔하지 않고 세그먼트 전체를 스캔
  • 결과 집합 순서 보장이 안됨

참조
1. [DB] 테이블 데이터 스캔 방식 및 디스크 접근 정리
2. 인덱스 풀 스캔(INDEX FULLSCAN)
3. 인덱스 스캔 방식 및 인덱스 쿼리튜닝

profile
계속해서 공부하는 개발자입니다 :)
post-custom-banner

0개의 댓글