개발노트

조인 메서드 선택 기준 본문

Database/SQLP

조인 메서드 선택 기준

개발자? 2022. 7. 22. 02:43

일반적인 조인 메서드 선택 기준

1) 소량 데이터 조인 → nl 조인

2) 대량 데이터 조인 → 해시 조인

3) 대량 데이터 조인인데 해시 조인으로 처리 불가할 때 → 소트 머지 조인 

  ** 조인 조건식이 등치(=)가 아니거나, 카테시안 곱일 때

 

수행빈도가 매우 높은 쿼리에 대한 조인 메서드 선택 기준

1) (최적화된) nl 조인과 해시 조인 성능이 같다면 → nl 조인

2) 해시 조인이 약간 더 빠르면 → nl 조인

=> 수행빈도가 높은 소량 데이터 조인은 설령 해시 조인이 약간 더 빠르더라도 nl 조인을 선택하라

3) nl 조인보다 해시조인이 매우 빠르면 → 해시 조인

 

nl 조인을 가장 먼저 고려해야 하는 이유는?

nl 조인에서 사용하는 인덱스는 공유 및 재사용하는 자료구조다.

반면, 해시테이블은 단 하나의 쿼리를 위해 생성하고 조인이 끝나면 곧바로 소멸하는 자료구조다. (일회성)

따라서, 수행시간이 짧으면서 수행빈도가 매우 높은 쿼리를 해시 조인으로 처리하면 cpu 와 메모리 사용률이 크게 증가한다. 해시 맵을 만드는 과정에서 여러 래치 경합도 발생한다. 

 

해시 조인을 사용하는 조건 3가지

1) 수행 빈도가 낮고

2) 쿼리 수행 시간이 오래 걸리고

3) 대량 데이터 조인일 때

--> 배치 프로그램, dw, olap 성 쿼리의 특징이기도 함. 

 

OLTP 환경에서는 최적화된 NL 조인을 사용, OLAP 환경에서는 해시 조인을 사용하자.
반응형

'Database > SQLP' 카테고리의 다른 글

ERD  (0) 2022.08.20
데이터 모델링의 이해  (0) 2022.08.20
Hash Join  (0) 2022.07.22
Sort Merge Join  (0) 2022.07.22
SQL TRACE 해석  (0) 2022.07.21
Comments