Query Time Partition Join 전략
Query Time Partition Join 전략
출처: 문서
일반적인 경우에는 조인 의미론을 깨뜨리지 않고 두 테이블을 모두 파티셔닝할 수 없지만, 가능한 경우도 몇 가지 있어요. 예를 들어 조인 조건이 ON A.col2 = B.col3처럼 두 컬럼 간의 등가라면, partition(A.col2) <> partition(B.col3) => A.col2 <> B.col3을 보장하는 파티션 함수를 각 테이블에 할당할 수 있어요. 가장 일반적인 경우는 해시 함수를 파티션 함수로 사용하는 것이에요. 이 속성의 결과로, 셔플 후 서로 다른 서버에 있게 된 행들은 조인될 필요가 없었어요.

점선 화살표는 셔플을, 실선 화살표는 서버 내 전송을 의미해요.
이 기법은 조인 조건이 두 컬럼 간의 등가이거나 등가의 결합(conjunction)일 때처럼 Pinot가 가능하다고 추론할 수 있을 때마다 사용해요. 예를 들어:
SELECT A.col1, B.col2
FROM A
JOIN B
ON A.col2 = B.col3 AND Ab.col5 = B.col2
이 기법을 사용하면 셔플되는 행 수는 count(A) + count(B)예요.