^^ 고수님들의 조언을 구합니다.
다름 아니라 저희시스템에 뷰가 하나 있는데요
T_VIEW(가칭)라는 무지막지하게 느린넘이 하나 있습니다.
이뷰의 구조를 보면 9개의 쿼리가 union all로 더해져 있습니다.
9개의 쿼리결과를 한번에 볼때도 있을수도 있지만,
일반적으로 저 뷰를 조회할때는 flag라는것을 주고
저flag가 뭐냐에 따라서 T_VIEW뷰 안의 union all중 하나의 쿼리만 조회합니다.
그런데~~~!! 실제 돌려보니 9개의 모든 쿼리를 다 찔러 본다는 겁니다.
우선 샘플을 보여드리겠습니다.
================================================================
-- 요런식으로 씁니다.
select *
from T_VIEW
where Flag = ’1’
혹은
select *
from T_VIEW
where Flag = ’3’
...
뷰 구조는 아래와 같습니다.
CREATE OR REPLACE VIEW T_VIEW
( Flag,
a,
b
)
AS
select ’1’ Flag, a_view.a a, a_view.b b from a_view -- 50만건 들어있는 뷰
union all
select ’2’ Flag, b_view.a a, b_view.b b from b_view -- 60만건 들어있는 뷰
union all
select ’3’ Flag, c_view.a a, c_view.b b from c_view -- 70만건 들어있는 뷰
union all
select ’4’ Flag, d_view.a a, d_view.b b from d_view -- 80만건 들어있는 뷰
union all
...
이런 select 절이 9개
;
========================================================
질문 드립니다. 저 뷰를 조회할때 Flag를 3으로 주면
DB가 3번 쿼리만 엑세스하게 할수 없을까요?
현재 3으로 주면 1~9까지 다 엑세스해서 너무나 느립니다 ㅠㅠ
작은 조언이라도 해주시면 정말 감사하겠습니다.
;