[SQL 튜닝 실습 1-6] 테이블 풀 스캔 튜닝 개념

2020. 1. 20. 14:48Oracle DBMS/Oracle 튜닝 1 [인덱스 튜닝]

반응형

선택도

인덱스 스캔이 테이블 풀 스캔보다 무조건 유리하다고 알고있는 개발자가 많아서
실행 계획에 테이블 풀 스캔에 대한 정보만 나오지 않으면 성능이 좋은 쿼리로 생각하고 
운영장비에 해당 SQL문을 적용하지만, 인덱스 스캔이 테이블 풀 스캔에 비해 반드시 유리한 건 아니다. 

SEX라는 컬럼이 있다고 치면, 성별은 남, 녀 만 존재한다
해당 컬럼을 인덱스로 생성해서 인덱스 스캔을 수행할 경우 테이블 전체의 행들의 50%에서 
인덱스 스캔을 통한 테이블 랜덤 액세스가 발생하게 된다
또한, 일반적인 인덱스 스캔은 싱글 블록 I/O 읽기인데 테이블 풀 스캔은 멀티 블록 I/O 읽기이다. 
이러한 2가지 이유로 SEX라는 컬럼을 조건절에 줘서 스캔할 경우 인덱스 스캔보다 테이블 풀 스캔이 더 유리하다.

선택도 구하는 공식 : 선택도(%) = (Distinct Value) ×100

 

인덱스 손익 분기점

인덱스 스캔보다 테이블 풀 스캔이 유리한 선택도의 수치를 의미
일반적으로 15% 보다 크면 테이블 풀 스캔이 유리하고 그 이하라면 인덱스 스캔이 더 유리하다

 

테이블 풀 스캔 튜닝

선택도가 높은 컬럼의 인덱스를 사용해서 인덱스 스캔을 하는 SQL문을 강제로 테이블 풀 스캔으로 처리하도록 하는 기법이다
즉, 손익분기점을 넘어 인덱스 스캔하기에 비효율적인 SQL을 강제로 테이블 풀 스캔을 하도록 처리하는 것이다

 

 

반응형