안녕하세요. 조인 힌트 질문 문의 드립니다.
(1)번은 leading 힌트에 의해서 B테이블이 드라이빙 테이블이되고(메모리에 해시 테이블생성됨)
use_hash 힌트의 괄호에(A)가 들어갔으므로 드라이브드 테이블이되며 해쉬조인으로 풀린것은
이해가 가는대요..
(2)번처럼 여러개 테이블 조인시 DBA분이 튜닝한 힌트를 보면 use_hash(A C) 이렇게 괄호에 여러개의 테이블이 들어가는대
정확히 무슨 의미 인가요? 인터넷에서 찾아보니 괄호에 여러개 써주면 알아서 드라이브드 테이블 정해준다고 하던대
맞나요??? A,C가 드라이브드 테이블이되면서 A,C 모두 해시 조인으로 되는건가요???
혹시 /*+ leading(B) use_hash(A) use_hash(C) */ 이렇게 쓰는것과 동일한 건가요???
(1)
SELECT /*+ leading(B) use_hash(A)*/
COUNT(*)
FROM DEPT A
, EMP B
WHERE A.DEPTNO = B.DEPTNO
-----------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 6 | 7 | 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 6 | | |
| * 2 | HASH JOIN | | 14 | 84 | 7 | 00:00:01 |
| * 3 | TABLE ACCESS FULL | EMP | 14 | 42 | 3 | 00:00:01 |
| 4 | TABLE ACCESS FULL | DEPT | 4 | 12 | 3 | 00:00:01 |
-----------------------------------------------------------------------
(2)
SELECT /*+ leading(B) use_hash(A C)*/
COUNT(*)
FROM DEPT A
, EMP B
, EMP_ADD C
WHERE A.DEPTNO = B.DEPTNO
AND A.ADD_ID = C.ADD_ID