오라클/Tuning
Join 관련 용어
빵순이^^
2010. 5. 8. 15:10
- Statment에서의 기능에 따라
select *
from emp e, dept d -- join statement
where e.deptno = d.deptno -- join predicate
and e.job = 'CLERK' -- non-join predicat
and e.sal >= 1000 -- non-join predicat
and d.deptno = 10 -- non-join predicat (single-row predicate) - Join 문장을 분류하기 위해
- oracle syntax : equi, nonequi, outer, self
- sql:1999 syntax : cross, natural, join using, join on, [left | right | full] outer join - Join Operation을 분류하기 위해 (UDS 참고)
종류 데이터의 양 RBO CBO 비고 Nested Loop 소량, 다양(정렬 필요) O O 인덱스의 상황에 따라 다양한 변화가 가능하다. Sort Merge 다량 O O 조인 기준 컬럼으로 정렬되어 있다면 Hash Join보다 빠를 수도 있다. Hash Join 다량 X O 반드시 Equi join일 경우에만 가능하다. - 같은 Join 문장이 다음과 같이 여러 방법으로 처리될 수 있다.
select *
from emp e, dept d
where e.deptno = d.deptno
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 868 | 8 (25)| 00:00:01 |
| 1 | MERGE JOIN | | 14 | 868 | 8 (25)| 00:00:01 |
| 2 | SORT JOIN | | 4 | 120 | 4 (25)| 00:00:01 |
| 3 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |
|* 4 | SORT JOIN | | 14 | 448 | 4 (25)| 00:00:01 |
| 5 | TABLE ACCESS FULL| EMP | 14 | 448 | 3 (0)| 00:00:01 |
----------------------------------------------------------------------------
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 868 | 7 (15)| 00:00:01 |
|* 1 | HASH JOIN | | 14 | 868 | 7 (15)| 00:00:01 |
| 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |
| 3 | TABLE ACCESS FULL| EMP | 14 | 448 | 3 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 868 | 9 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 14 | 868 | 9 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL| EMP | 4 | 128 | 2 (0)| 00:00:01 |
---------------------------------------------------------------------------