안녕하세요
동일 형식의 쿼리 3가지가 있을 경우에,
union all 을 이용해 구하는 방법이 부하가 적을까요?
아니면 3개를 각각 구해서 하는 방법이 좋을까요?
제 생각에는 union all 이 아무래도 쿼리 호출의 빈도수에서 적다고 생각되어 지는데요..
제가 지금 하고 있는 것은,
A라는 테이블에 컬럼 a(flag 값), b(flag 값), c(number) 가 있을경우
a 가 1인 값을 c 를 기준으로 정렬,
b 가 1인 값을 c 를 기준으로 정렬,
c 를 기준으로 정렬
이렇게 3 개의 결과가 필요합니다.
쿼리 내용
select co, point, product_name, popular, recommand from (
select * from ( select 'P' co, point, product_name, popular, recommand, row_number() over (order by point desc) rank from PRODUCT where recommand = 'Y' ) where rank <= 5
union all
select * from ( select 'R', point, product_name, popular, recommand, row_number() over (order by point desc) rank from PRODUCT where popular = 'Y' ) where rank <= 5
union all
select * from ( select 'S', point, product_name, popular, recommand, row_number() over (order by point desc) rank from PRODUCT ) where rank <= 5
)
많은 지도 부탁 드립니다. |