실행계획 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 |
댓글 없음:
댓글 쓰기