뷰에서 다중테이블 UNION질문있습니다. 0 2 1,957

by 김포개발자 [SQL Query] [2012.05.04 14:27:59]


안녕하세요

저희 DB의 구조는

데이터를 한 테이블에서 모두 관리하지 않고

테이블을 12개의 월별로 나누어서

뷰에서 12개의 테이블을 UNION ALL을 하는 구조로 되어있습니다.

그래서 프로시저에서 데이터를 검색할일이 있으면

뷰테이블을 select 하게 되는데요

그렇게 되니까 결국은 12개의 월별 테이블을 모두 FULL SCAN 하는 상황이 생기게 되었습니다.

그래서 뷰에서 

table01
...
UINION ALL
...
table12

을 모두 UNION하지 않고 조건문을 줘서 해당 달의 테이블만 select하고 싶은데

뷰에서는 if문 안되는걸로 알고 있거든요

12개의 전체 테이블을 select하지 않고 해당달의 테이블만 SELECT 할 수 있는 좋은 방법이 있을까요?

고수님들의 조언부탁드리겠습니다.
by 현 [2012.05.06 12:52:57]

12개의 테이블의 '달' 컬럼에 인덱스가 있다면
12개 테이블을 모두 읽더라도 11개 테이블에는 건수가 없기 때문에
한건만 읽어보고 바로 빠질 겁니다.
그건 부담이 되지 않을 겁니다.
만약 그 한건도 읽기 싫으시다면
where절에 조건으로 비교하는 방법도 고려해 보실 수 있습니다.

select * from table01 where :입력받은달컬럼 = '01' -- 1월달
union all
select * from table01 where ;입력받은달컬럼 = '02' -- 2월달

이렇게 하면 해당 달일 경우에만 access 하겠지요.

by 손님 [2012.05.08 13:37:54]
현님 너무나 감사한 조언 감사합니다.

현님의 생각대로 플랜을 보고 비교해서 적용하면 좋을것같습니다

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입