select 문에서 여러 번 반복되는 복잡한 하위 쿼리가있을 때 하이브에서 쿼리를 작성/작성하는 가장 좋은 방법은 무엇입니까?하이브 - 최적의 성능으로 하이브의 하위 쿼리를 다시 사용하는 방법
나는 원래 실행될 때마다 새로 고쳐진 하위 쿼리에 대한 임시 테이블을 만들었습니다. 그런 다음 원래 쿼리 (임시 테이블 삭제)의 일부로 CTE를 사용하여 가독성을 높이고 성능 저하를 눈여겨 보았습니다. 이로 인해 하위 쿼리를 다시 사용해야 할 때 성능 측면에서 어떤 구현 방법이 가장 적합한 지 궁금합니다.
내가 작업중인 데이터에는 1 천만 개가 넘는 레코드가 포함되어 있습니다. 다음은 CTE를 사용하여 작성한 쿼리의 예입니다.
with temp as (
select
a.id,
x.type,
y.response
from sandbox.tbl_form a
left outer join sandbox.tbl_formStatus b
on a.id = b.id
left outer join sandbox.tbl_formResponse y
on b.id = y.id
left outer join sandbox.tbl_formType x
on y.id = x.typeId
where b.status = 'Completed'
)
select
a.id,
q.response as user,
r.response as system,
s.response as agent,
t.response as owner
from sandbox.tbl_form a
left outer join (
select * from temp x
where x.type= 'User'
) q
on a.id = q.id
left outer join (
select * from temp x
where x.type= 'System'
) r
on a.id = r.id
left outer join (
select * from temp x
where x.type= 'Agent'
) s
on a.id = s.id
left outer join (
select * from temp x
where x.type= 'Owner'
) t
on a.id = t.id;