실행계획 SQL연산(INLIST
ITERATOR)
구로디지털
오엔제이프로그래밍실무교육센터
인덱스
컬럼이 IN-LIST구에 나타나는 경우의 ROW 연산
입니다. INLIST ITERATOR는 IN-LIST의
인수 만큼 반복연산을 수행 합니다.
SQL> desc emptest;
이름
널? 유형
------------------ --------
--------------------------
EMPNO
NUMBER
DEPTNO
NUMBER
ENAME
VARCHAR2(46)
ADDR
VARCHAR2(44)
SAL
NUMBER
SQL> select count(*) from emptest;
COUNT(*)
----------
2500000
SQL> select index_name, table_name from user_indexes
where table_name like 'EMPTEST';
INDEX_NAME TABLE_NAME
------------------------------ ------------------------------
IDX_EMPTEST_ADDR
EMPTEST
IDX_EMPTEST_DEPTNO EMPTEST
ADDR 컬럼으로 인덱스가 있다. Addr 컬럼을 이용해
보자.
SQL> select empno, ename
2 from emptest
3 where addr in ('서울1','서울10001');
EMPNO ENAME
----------
----------------------------------------------
1 홍길동1
10001 홍길동10001
경 과: 00:00:00.00
Execution Plan
----------------------------------------------------------
| 0 | SELECT STATEMENT
| 1 | INLIST ITERATOR
| 2 | TABLE ACCESS BY INDEX ROWID| EMPTEST
|* 3 | INDEX RANGE SCAN | IDX_EMPTEST_ADDR
위의 는 INLIST ITERATOR를
나타내게 하기 위해 넣은 힌트 구문이며 힌트 구문을 사용하지 않는 다면 아래와 같은 실행 계획이 수립됩니다.
SQL> select empno, ename
2 from emptest
3 where addr in ('서울1','서울10003');
EMPNO ENAME
----------
----------------------------------------------
1 홍길동1
10003 홍길동10003
경 과: 00:00:00.00
--------------------------------------------------------------------
| 0 | SELECT STATEMENT
| 1 | INLIST ITERATOR
| 2 | TABLE ACCESS BY INDEX ROWID| EMPTEST
|* 3 | INDEX RANGE SCAN | IDX_EMPTEST_ADDR |
댓글 없음:
댓글 쓰기