임팔라에는 조인 힌트 외에는 조회 성능 개선을 위한 힌트가 특별히 없다. 임시 테이블로 처리 단계를 나누는 방법이 그나마 확실한 방법인데 이건 약간 번거롭다.
조인 방식은 Broadcast join (/*+ broadcast */
) 이 기본인데, Partitioned join (/*+ shuffle */
) 으로 동작하도록 명시적으로 힌트로 제어할 수 있다.
SET DEFAULT_JOIN_DISTRIBUTION_MODE=shuffle;
와 같이 파라미터로 기본값이 다르게 설정돼있을 수도 있으니 명시적으로 힌트를 기재하는게 좋을 것도 같다.
옵티마이저를 믿고 아무런 힌트 사용 없이 쓰는게 이상적이겠지만 한번씩 정말 이상한 플랜을 만들어줄 때도 있다.
그럴땐 STRAIGHT_JOIN
으로 조인 순서를 고정시키고 드라이빙 테이블부터 크기가 작은 순서대로 정렬해볼 것.