[실무에서 바로 쓰는 SQL 튜닝][ORACLE] 28강

MinHee·2023년 5월 20일
0
post-thumbnail

인덱스 스캔 방법 7가지

INDEX RANGE SCAN - 숫자형 컬럼 인덱스

INDEX RANGE SCAN :
인덱스에서 조건과 일치하는 행을 찾았을 때에, 바로 스캔을 멈추지 않고 아래의 행까지 스캔하는 것

만약 조건절이 UNIQUE 제약 조건(행의 값이 유일무이)이 걸려있다면, INDEX RANGE SCAN을 하지 않음

  • 하나만 스캔함

인덱스가 있음에도 불구하고 FULL TABLE SCAN을 한다면, 아래와 같이 힌트를 명시한다

INDEX SCAN : /+index(테이블명 인덱스명)/

select /+index(emp emp_sal)/ ename, sal
from emp
where sal = 1600;

INDEX RANGE SCAN - 중복된 데이터가 있는 컬럼

중복된 값을 가지는 칼럼에 대해선 CREATE UNIQUE INDEX가 안됨

CREATE INDEX emp_job
ON emp(job);

일치하는 행들을 연달아서 스캔하다가, 일치하지 않는 값을 만나면 스캔을 멈추고 rowid로 table access를 함

이럴때는 where절의 좌변을 가공하지 마라

where절의 인덱스 칼럼이 가공되었다면

인덱스 칼럼을 가공하지 말아라

인덱스 컬럼을 가공하여 조건을 걸게 되면, 인덱스 테이블 access를 하지 못하고 full table scan을 하게 됨

문자형 칼럼예시

날짜형 칼럼예시

profile
성장하는 개발자

0개의 댓글