← 질문 목록
#51깊이 0

Hash Anti Join은 내부에서 어떻게 동작하는가?

데이터베이스깊이인덱스·질의자료구조

Hash Anti Join은 우측 집합으로 해시 테이블을 만든 뒤(메모리가 모자라면 나눠 디스크로 흘리며), 좌측 집합을 읽으며 해시 테이블에 존재하지 않는 행만 선별해 반환하는 방식으로 동작한다.

  1. 우측 집합해시 표

    조인 키로 표를 만든다

  2. 좌측 행해시 표

    같은 함수로 키를 찾는다

  3. 좌측 행결과

    표에 키가 없는 행만 내보낸다

Build 단계에서는 조건절 오른쪽 집합을 스캔하여 조인 키 기준의 해시 테이블을 만든다. 이때 해시 함수를 거쳐 버킷에 데이터를 할당하며 메모리 공간을 확보한다.

Probe 단계에서는 왼쪽 집합의 행을 순차적으로 읽으며 동일한 해시 함수로 해시 테이블을 탐색한다. 일치하는 키를 찾는 즉시 검색을 중단하고 해당 행을 버린다.

이러한 조기 종료(Short-circuit) 특성 덕분에 등가 조건의 NOT EXISTS를 빠르게 처리할 수 있다. NOT IN은 NULL 의미론을 따로 다뤄야 해 그대로 안 태워질 수 있다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

Hash Anti Join은 내부에서 어떻게 동작하는가?