use_hash 힌트 주는 방법 질문 입니다. 0 2 726

by 유환 [SQL Query] [2020.03.15 22:59:16]


안녕하세요..
C, D 테이블은 공통코드 테이블 입니다.
A,B테이블만 조인하면 속도가 빠른대 여기에 C,D 공통코드 테이블 조인하면 엄청 느려집니다.

플랜을 보니 C,D가 네스트루프 조인하는게 보여서 해쉬로 조인으로 되도록 힌트를 줬는대요.
속도가 많이 빨라지긴 했습니다. 

근대 힌트 주는 방법이 맞는가요?  힌트중에 ordered 는 빼야 하나요??  /*+ use_hash(C, D) */  이렇게 하는게 맞나요????

A테이블이 데이터가 제일 많습니다. 백만건 넘습니다. B테이블도 기준정보 테이블 이라서 많치는 않습니다. 

SELECT /*+ ordered use_hash(C, D) */
       A.ID, A.NAME, B.ID, B.NAME, C.CD_NM, D.CD_NM
  FROM A , B , C ,D
 WHERE A.ID = B.ID
   AND A.COM_CD1 = C.CD
   AND A.COM_CD2 = D.CD
   AND A.ID = '1'
   
   

by 우리집아찌 [2020.03.16 09:54:08]

인덱스 정보같은것도 같이 올려주세요


by 마농 [2020.03.16 14:20:13]

공통코드 테이블이면? 보통 코드조건만으로 조인하느게 아니라 코드구분값을 지정해 주지 않나요?
코드 구분 지정이 누락된 건 아닌지? 공통코드의 PK 정보를 확인해 보세요.
해시조인은 대량에 유리한 조인인데? 소량의 코드테이블 조인에 해시가 유리할지는 의문입니다.
중복코드가 많이 있다면 스칼라서브쿼리를 이용하는 방법도 있습니다.

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