실행계획 SQL 연산(CONCATENATION)
반환된 로우를 합산하는 연산 입니다. 아래의 예를 보죠…
SQL>SELECT *
FROM EMP
WHERE JOB=’SALESMAN’
AND DEPTNO IN (20, 40);
Execution Plan
-------------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 CONCATENATION
2 1 TABLE ACCESS (BY INDEX ROWID) OF ‘EMP’
3 2 AND-EQUAL
4 3 INDEX (RANGE SCAN) OF ‘idx_emp_deptno’ (NON-UNIQUE)
5 3 INDEX (RANGE SCAN) OF ‘idx_emp_job’ (NON-UNIQUE)
6 1 TABLE ACCESS (BY INDEX ROWID) OF ‘EMP’
7 6 AND-EQUAL
8 7 INDEX (RANGE SCAN) OF ‘idx_emp_deptno’ (NON-UNIQUE)
9 7 INDEX (RANGE SCAN) OF ‘idx_emp_job’ (NON-UNIQUE)
위의 실행 결과를 보면 JOB이 ‘SALESMAN’ 이면서 DEPTNO가 20인 데이터(AND-EQUAL)를 인덱스를 이용하여 추출하며 JOB이 ‘SALESMAN’ 이면서 DEPTNO가 40 데이터를 추출하여 서로 합산하여 결과를 만들어 냄을 알 수 있습니다.
결국 위의 SQL을 다르게 풀어 쓰면 다음과 같은 실행 계획을 가진다고 할 수가 있습니다.
(성능이 똑같다…)
SQL> SELECT *
FROM EMP
WHERE (JOB=’SALESMAN’ AND DEPTNO = 20)
OR (JOB=’SALESMAN’ AND DEPTNO = 40)
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - 실행계획 SQL 연산(COUNT) (0) | 2012.08.17 |
---|---|
oracle - 실행계획 SQL 연산(COUNT STOPKEY) (0) | 2012.08.17 |
oracle - 실행계획 SQL 연산(AND-EQUAL) (0) | 2012.08.17 |
oracle - 오라클 초보 사용자를 위한 팁 (0) | 2012.08.17 |
방화벽 안에 있는 윈도우 2000 서버에 오라클 8.1.7 설치 및 접속하기 (0) | 2012.08.17 |