꿈꾸는 개발자, DBA 커뮤니티 oracleclub.com
티베로강좌  :  큐브리드강좌  :  오라클강좌  :  오라클팁  :  오라클사용자팁  :  Oracle Blogs  :  오라클Q&A  :  오라클자료실  :  IT컬럼/소식  :  좋은글감동  :  방명록
Searched by NAVER
DB검색 :
모두펼치기 | 모두닫기

Oracle 질문과 답변 oracleclub.com
Union all 부분범위처리 문제
조민수 : 2009-06-30 15:30  

^^ 고수님들의 조언을 구합니다.

다름 아니라 저희시스템에 뷰가 하나 있는데요

 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까지 다 엑세스해서 너무나 느립니다 ㅠㅠ

작은 조언이라도 해주시면 정말 감사하겠습니다.
;

태그 : union all
조회수 141,  추천수 0
등록 글답변 글수정 목록보기
이름 쓰기
비밀번호
도움 주시는 곳
oraclejava