[SQL 튜닝 실습 1-6] 테이블 풀 스캔 튜닝 개념
2020. 1. 20. 14:48ㆍOracle DBMS/Oracle 튜닝 1 [인덱스 튜닝]
반응형
선택도
인덱스 스캔이 테이블 풀 스캔보다 무조건 유리하다고 알고있는 개발자가 많아서
실행 계획에 테이블 풀 스캔에 대한 정보만 나오지 않으면 성능이 좋은 쿼리로 생각하고
운영장비에 해당 SQL문을 적용하지만, 인덱스 스캔이 테이블 풀 스캔에 비해 반드시 유리한 건 아니다.
SEX라는 컬럼이 있다고 치면, 성별은 남, 녀 만 존재한다
해당 컬럼을 인덱스로 생성해서 인덱스 스캔을 수행할 경우 테이블 전체의 행들의 50%에서
인덱스 스캔을 통한 테이블 랜덤 액세스가 발생하게 된다
또한, 일반적인 인덱스 스캔은 싱글 블록 I/O 읽기인데 테이블 풀 스캔은 멀티 블록 I/O 읽기이다.
이러한 2가지 이유로 SEX라는 컬럼을 조건절에 줘서 스캔할 경우 인덱스 스캔보다 테이블 풀 스캔이 더 유리하다.
선택도 구하는 공식 : 선택도(%) = (Distinct Value) ×100
인덱스 손익 분기점
인덱스 스캔보다 테이블 풀 스캔이 유리한 선택도의 수치를 의미
일반적으로 15% 보다 크면 테이블 풀 스캔이 유리하고 그 이하라면 인덱스 스캔이 더 유리하다
테이블 풀 스캔 튜닝
선택도가 높은 컬럼의 인덱스를 사용해서 인덱스 스캔을 하는 SQL문을 강제로 테이블 풀 스캔으로 처리하도록 하는 기법이다
즉, 손익분기점을 넘어 인덱스 스캔하기에 비효율적인 SQL을 강제로 테이블 풀 스캔을 하도록 처리하는 것이다
반응형
'Oracle DBMS > Oracle 튜닝 1 [인덱스 튜닝]' 카테고리의 다른 글
[SQL 튜닝 실습 1-7] 테이블 풀 스캔 튜닝 (0) | 2020.01.20 |
---|---|
[SQL 튜닝 실습 1-5] 인덱스 풀 스캔 튜닝 (0) | 2020.01.20 |
[SQL 튜닝 실습 1-4] 인덱스 풀 스캔 튜닝 개념 (0) | 2020.01.20 |
[SQL 튜닝 실습 1-3] 인덱스 스캔 튜닝 (0) | 2020.01.20 |
[SQL 튜닝 실습 1-2] 인덱스 스캔 튜닝 (0) | 2020.01.20 |