[SQLD] 조인 수행 원리

younghyun·2023년 6월 9일
0

SQLD

목록 보기
17/18

NL JOIN

  • 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행
  • 랜덤 엑세스 방식으로 데이터를 읽음
  • 대량의 데이터 처리 시 적합하지 않다
  • Driving Table로는 데이터가 적거나 where절 조건으로 row의 숫자를 줄일 수 있는 테이블이어야 한다
  • Driven Table에는 조인을 위한 적절한 인덱스가 생성되어 있어야 한다.

SORT MERGE JOIN

  • 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행
  • 주로 FULL TABLE 스캔 방식으로 데이터를 읽음
  • 랜덤 액세스로 NL Join에서 부담이 되던 넓은 범위의 데이터를 처리할 때 이용되던 조인 기법
  • 조인 컬럼의 인덱스가 없어도 조인 작업이 가능하다는 장점
  • 모든 정렬 작업을 수행하기에 메모리가 부족한 경우 성능이 떨어질 수 있다
  • 동등 조인 뿐만 아니라 비동등 조인에 대해서도 조인 작업이 가능하다

HASH JOIN

  • 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법
  • 해쉬 함수 적용 시 동일한 값은 항상 같은 값으로 해싱됨
  • 생성된 해쉬 테이블의 크기가 메모리에 적재할 수 있는 크기보다 더 커지면 임시 영역(디스크)에 해쉬 테이블을 저장
  • 동등 조인에서만 사용이 가능하다
  • NL JOIN의 랜덤 엑세스와 SORT MERGE JOIN의 정렬 작업의 부담을 위한 대안이다
  • 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다
  • 드라이빙 조건과 상관없이 좋은 성능을 발휘할 수 있는 조인 방법이다
  • 유용한 인덱스가 부족하여 중첩루프 조인이 비효율적 일 때 효과적이다

Dring Table이란

조인을 할때 먼저 액세스 되는 테이블을 Driving Table이라고 하며 나중에 액세스 되는 테이블을 Driven Table이라고 한다.

profile
🌱 주니어 백엔드 개발자입니당

0개의 댓글