이중 for문과 같은 원리
하나의 Table을 기준으로 각 row를 추출 할 때 마다 순차적으로 상대 Table의 연관된 모든 row들을 조인에 의해 추출
JOIN Column이 Index되어 있지 않으면 전부 full scan해야 하기 때문에 엄청난 비효율
JOIN이 계속 일어나기 때문에 대량의 Table에 적절하지 않다
JOIN 컬럼을 기준으로 sorting시킨 후 JOIN
Inner Table쪽에 적절한 인덱스가 없어서 Nested Loop JOIN 쓰기에 너무 비효율 적일 때 사용
Equi JOIN이 아니라 범위 JOIN을 하는 경우에도 적절
Table Random Access가 일어나지 않고 sorting작업이 PGA영역에서 수행되기 때문에 경합이 발생하지 않아서 성능에 유리한
배치에서 쓰면 좋은 수행 원리
대용량 Table을 JOIN할 때 사용하면 좋다
그룹 Table을 Build Input으로 삼아서 HASH 영역에 저장
HASH영역은 PGA 영역에 있기 때문에 처리속도가 빠르다
Key 컬럼에 중복값이 없을수록 성능에 유리하다
Equi JOIN만 가능하다
Sort Merge JOIN처럼 Random Access부하가 없다
HASH 영역의 사이즈가 정해져 있기 때문에 들어가는 Table의 크기가 충분히 작아야 성능에 유리
Table의 용량이 HASH사이즈를 초과하면 디스크 영역을 사용하기 때문에 성능에 매우 불리
수행 빈도가 높은 OLTP환경에서 HASH JOIN으로 풀리게 되면 오히려 CPU나 메모리의 사용량이 늘어서 성능에 안좋아 질 수 있다.
조인 조건이 정확히 일치하는 경우에 사용 (PK(기본키) 와 FK(외래키) 를 사용한 조인)
조인 조건에 ' = ' 를 이용하는 조인
매칭이 안되는 부분은 누락이 돼버리고 나머지만 JOIN