조건 푸시다운의 추이성

조건 푸시다운의 추이성 (Transitivity on Predicate Pushdown)

Predicate Pushdown(조건 푸시다운)은 쿼리의 조건(WHERE 절)을 더 아래 단계, 즉 스캔 단계로 미리 전달해 읽는 데이터 양을 줄이는 최적화예요. 이 문서는 여러 조건이 추이적(transitive)으로 전파되는 방식을 다룹니다.

출처: 문서

본문

Hive의 조건 푸시다운에서 추이성(transitivity)이 어떻게 적용되는지 설명합니다.

추이성 (Transitivity) 개념

"추이성"이란 A = B 이고 B = C 이면 A = C 가 성립하는 성질을 말합니다. Hive의 옵티마이저는 조인 또는 필터에서 이런 관계를 활용해 추가 조건을 유도할 수 있습니다.

예를 들어 한 조인에서 컬럼 간의 동등 관계가 밝혀지면, 그 관계에서 파생된 추가 필터를 다른 쪽 테이블에도 적용할 수 있습니다. 이렇게 하면 불필요하게 읽는 행을 줄여 성능을 개선합니다.

예시 개념

SELECT *
FROM t1 JOIN t2 ON t1.id = t2.id
WHERE t1.id = 100;

위 쿼리에서 t1.id = 100 이라는 조건과 t1.id = t2.id 라는 조인 조건이 함께 있으므로, 옵티마이저는 t2.id = 100 이라는 조건도 유도해 t2 스캔에 푸시다운할 수 있습니다.

고려 사항

  • 추이적 푸시다운이 항상 적용되는 것은 아니며, SQL 문법과 데이터 특성에 따라 달라질 수 있습니다.
  • NULL 처리와 부등호 조건 등에서는 추이성이 성립하지 않을 수 있으므로 주의가 필요합니다.

참고: 정확한 작동 조건과 예외는 원문 문서를 참고하세요.

더 알아보기 (Learn more)

  • 실행 계획(EXPLAIN)을 확인하면 조건이 실제로 푸시다운되는지 볼 수 있어요. 조인 키에 필터가 있는 쿼리에서 이 최적화가 어떻게 작동하는지 비교해 보세요.