개발햄비

[DB] 오브젝트 스캔 유형 본문

개발/DB

[DB] 오브젝트 스캔 유형

개발햄 2022. 4. 18. 17:37

테이블 스캔 (table scan) 과 인덱스 스캔 (index scan)


 

1. 테이블 스캔 (table scan)

인덱스를 거치지 않고 바로 디스크에 위치한 테이블 데이터에 접근하는 유형

· 테이블 풀 스캔 (table full scan)

 

1-1. 테이블 풀 스캔 (table full scan)

인덱스를 거치지 않고 테이블로 바로 직행 , 처음부터 끝까지 데이터를 훑어보는 방식.

조건문 기준으로 활용할 인덱스가 없을때 발생,  성능적으로 부정적

 

 

2. 인덱스 스캔 (index scan)

인덱스로 테이블 데이터를 찾아가는 유형

· 인덱스 범위 스캔 , 인덱스 풀 스캔 , 인덱스 고유 스캔, 인덱스 루스 스캔, 인덱스 병합 스캔

 

2-1. 인덱스 범위 스캔 (Index range scan)

인덱스를 범위 기준으로 스캔한 뒤 스캔 결과를 토대로 테이블 데이터를 찾아가는 방식

Between A and B 구문, < , > , LIKE 등  범위 스캔

좁은 범위를 스캔할 때는 성능적으로 매우 좋음. 넓은 범위는 비효율적.

 

2-2. 인덱스 풀 스캔  (Index full scan)

인덱스를 처음부터 끝까지 검색하는 방식.  인덱스로 구성된 열 정보만 접근

테이블 풀 스캔 방식보다는 성능 상 유리하지만 , 전 영역을 탐색하기 때문에 조건 넣어 검색하는 것을 지향

 

2-3. 인덱스 고유 스캔  (Index unique scan)

기본 키나 인덱스로 테이블에 접근하는 방식

인덱스를 사용하는 스캔 방식 중 가장 효율적인 스캔 방법

WHERE 절에 조건을 작성하여 사용.

 

2-4. 인덱스 루스 스캔  (Index loose scan)

인덱스의 필요한 부분들만 골라 스캔하는 방식. 인덱스 범위 스캔처럼 넓은 범위에 전부 접근하지 않고

WHERE 절 조건문 기준으로 필요한 데이터와 필요하지 않은 데이터 구분 뒤 불필요한 인덱스 키 무시.

GROUP BY, MAX , MIN 함수가 포함되면 작동 , 오름차순으로 정렬된 인덱스에서 최댓값, 최소값 필요할 경우 이에 해당

 

2-5. 인덱스 병합 스캔  (Index merge scan)

테이블 내 생성된 인덱스들을 통합해서 스캔하는 방식.

결합 union , 교차 intersection 방식, 이들 방식은 모두 실행 계획으로 출력

물리적으로 존재하는 개별 인덱스를 각각 수행하므로, 인덱스 접근 시간 몇 배로 걸림