use_hash 에 대해서 간단한 질문입니다 ^^ 0 1 3,009

by 삼각받침 [Oracle Tuning] use_hash [2013.03.04 16:01:20]



안녕하세요~ 오라클클럽 고수님들..
간단 하지만 저한테는 조금 헷갈리는 것이 있어서 이렇게 살짝 들렀습니다. ^^

아래와 같은 sql 문이 있습니다.
select /*+ leading(e) use_hash(e h l i f a b c g) */
from  a, b, c, f, g, h, e, l, i;

위와 같은 경우
hash join 은 과정은 어떻게 되는걸까요?

 case 1 : e(hash) + h > part1
  part1(hash) + l > part2
  part2(hash) + f > part3
  .
  .
  .


case 2 : e(hash) + h
e(hash)  + I
e(hash) + f
  .
  .
  .

case 1 or case 2?

use_hash 또는 use_nl일 경우 위에 처럼 테이블이 많아지면 조금 헷갈릴때가 있습니다.

아시는 분들의 간단한 조언좀 부탁드립니다 ^^

그럼 좋은 하루 되세요~
  

by 웅 [2013.03.05 13:53:14]

part가 중간집합을 의미하는 것이라면 case1으로 처리되는 것이 맞습니다.
build input이 e로 시작되어 해당 집합은 hash area를 이용하는 중간집합으로 구성되며
이후 probe 집합과 조인결과를 중간집합으로 하는 build input이 순차적으로 발생하게 됩니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입