[Oracle] INDEX UNIQUE SCAN

당당·2023년 12월 26일
0

Oracle

목록 보기
32/51

📔설명

index unique scan을 알고, range scan과 비교해보자


🍔INDEX UNIQUE SCAN

: 중복되지 않은 컬럼에만 걸 수 있는 인덱스

empno는 중복되지 않은 유니크한 컬럼이다.

create unique index emp_empno on emp(empno);

INDEX RANGE SCAN과 다르게, 만약 사원번호 7788을 찾을 경우 한번 더 읽지 않고 (값이 중복되지 않으므로) 바로 ROWID로 테이블 행을 찾으러 간다.

select /*+ gather_plan_statistics */ empno, ename
from emp
where empno=7788;

select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));

만약, emp_empno 인덱스emp_ename 인덱스가 있는 경우

select /*+ gather_plan_statistics */ empno, ename, sal
from emp
where ename='SCOTT' and empno=7788;

위의 sql에서 오라클의 옵티마이저는 unique index를 선택한다.
딱 하나의 행만 선택하기 때문이다!

profile
MySQL DBA 신입

0개의 댓글