병합 조인 이해

병합 조인에서는 두 입력이 모두 조인 조건자의 등가(ON) 절로 정의되는 병합 열에서 정렬되어야 합니다. 쿼리 최적화 프로그램은 일반적으로 인덱스를 검색하거나(인덱스가 적절한 열 집합에 있는 경우) 병합 조인 아래에 정렬 연산자를 배치합니다. 간혹 여러 개의 등가 절이 있는 경우도 있지만 사용 가능한 등가 절에서만 병합 열을 가져옵니다.

각 입력이 정렬되므로 Merge Join 연산자는 각 입력으로부터 행을 가져와서 비교합니다. 예를 들어 내부 조인 작업에 대해서는 행이 동일한 경우 반환됩니다. 행이 동일하지 않으면 값이 더 낮은 행이 무시되고 해당 입력으로부터 다른 행을 가져옵니다. 모든 행이 처리될 때까지 이 과정이 반복됩니다.

병합 조인 작업은 일반 또는 다 대 다 작업이 될 수 있습니다. 다 대 다 병합 조인에서는 임시 테이블을 사용하여 행을 저장합니다. 각 입력으로부터 중복 값이 있으면 그 중 하나의 입력을 다른 입력으로부터 각각의 중복이 처리될 때 중복의 시작 부분까지 되감아야 합니다.

잔여 조건자가 있는 경우에는 병합 조건자에 부합되는 모든 행이 잔여 조건자를 평가하고 그 조건자에 부합되는 행만 반환됩니다.

병합 조인 자체는 매우 빠르지만 정렬 작업이 필요한 경우에는 비용이 많이 드는 방법이 될 수 있습니다. 그러나 데이터 볼륨이 크고 원하는 데이터를 기존의 B-트리 인덱스로부터 미리 정렬된 상태로 가져올 수 있는 경우에는 주로 병합 조인이 사용 가능한 조인 알고리즘 중 가장 빠른 조인이 됩니다.