본문 바로가기

프로그래밍/oracle

oracle - 실행계획 SQL연산(INLIST ITERATOR)

반응형

실행계획 SQL연산(INLIST ITERATOR)


인덱스 컬럼이 IN-LIST구에 나타나는 경우의 ROW 연산 입니다. INLIST ITERATOR는 IN-LIST의 인수 만큼 반복연산을 수행 합니다.


SQL>SELECT /*+ ALL_ROWS */

              ENAME,

              SAL

     FROM   EMP

     WHERE  DEPTNO IN (10, 20, 30);


Execution Plan

--------------------------------------------------------------------

0        SELECT STATEMENT Optimizer=CHOOSE

1        0   INLIST ITERATOR

2        1     TABLE ACCESS (BY INDEX ROWID) OF ‘EMP’

3        2       INDEX (RANGE SCAN) OF ‘idx_emp_deptno’ (NON-UNIQUE)



위의 /*+ ALL_ROWS */는 INLIST ITERATOR를 나타내게 하기 위해 넣은 힌트 구문이며 힌트 구문을 사용하지 않는 다면 아래와 같은 실행 계획이 수립됩니다.


SQL>SELECT ENAME,

              SAL

     FROM   EMP

     WHERE  DEPTNO IN (10, 20, 30);


Execution Plan

--------------------------------------------------------------------

0        SELECT STATEMENT Optimizer=CHOOSE

1        0   CONCATENATION

2        1     TABLE ACCESS (BY INDEX ROWID) OF ‘EMP’

3        2       INDEX (RANGE SCAN) OF ‘idx_emp_deptno’ (NON-UNIQUE)

4        1     TABLE ACCESS (BY INDEX ROWID) OF ‘EMP’

5        2       INDEX (RANGE SCAN) OF ‘idx_emp_deptno’ (NON-UNIQUE)

6        1     TABLE ACCESS (BY INDEX ROWID) OF ‘EMP’

7        2       INDEX (RANGE SCAN) OF ‘idx_emp_deptno’ (NON-UNIQUE)

 

 

 

 


반응형