조인 힌트 질문 문의 드립니다. 0 1 1,208

by 유환 [Oracle 기초] [2020.03.22 16:03:54]



안녕하세요. 조인 힌트 질문 문의 드립니다.

(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

by ㅇㅇ준 [2020.03.23 11:49:19]

 /*+ leading(B) use_hash(A) use_hash(C) */  와 동일합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입