실행계획 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)
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - 실행계획 SQL연산(MERGE JOIN) (0) | 2012.08.17 |
---|---|
oracle - 실행계획 SQL연산(MERGE ANTI-JOIN) (0) | 2012.08.17 |
oracle - 실행계획 SQL연산(INDEX RANGE SCAN DESCENDING, INDEX UNIQUE SCAN) (0) | 2012.08.17 |
oracle - 실행계획 SQL 연산(INDEX RANGE SCAN) (0) | 2012.08.17 |
oracle - 실행계획 SQL 연산(HASH SEMI-JOIN) (0) | 2012.08.17 |