문제 ]
어떤 테이블의 필드 하나가 조건에 따라 두가지의 테이블을 물고있습니다.
만약 필드값이 "9"로 시작하면 A테이블을
"G"로 시작하면 B테이블을
SQL문장을 어떻게 구성해야 하나요?
현재 사용하는 SQL문은 다음과 같습니다.
SELECT A FROM 문제의테이믈, ( SELECT * FROM A테이블 UNION SELECT * FROM B테이블 ) C
WHERE 문제의테이블.특정필드=C.특정필드(+)
하지만 속도가 너무 느려요 좋은 해결방법은 없는지
전문가의 조언을 부탁드립니다.
--
답변 :
글쎄요..정확한 상황이 어떤것인지 파악하기가 어렵습니다.
UNIION ALL 을 안쓰고 UNION 을 쓰신걸로 봐서는 A,B테이블이 구조가 같고
같은 DATA값을 가지고 있을 수 있다는 얘긴데..제가 예측한 상황이 맞다면
차라리 먼저 한테이블씩 JOIN을 건후 나중에 UNION 하는것이 오히려
낫겠습니다.
단, JOIN이 걸리는 컬럼이 INDEX 사용가능하다면 말입니다.
그러니까 '9'로 시작하는 것만 조건절로 걸러서 A테이블과 조인을 걸고,
다시 'G'로 시작하는 것만을 조건절로 걸러서 B테이블과 조인을 건후
둘을 UNION 하는것이 좋을거 같습니다.
그렇게 하면 조인이 일어날때 A,B에 있는 INDEX를 이용할 수 있어서
DATA 가 많을 수록 속도에는 효과가 있을 듯 하군요..
그럼...
P.S. 만약 아니라면 상황과 조건을 좀더 소상히 알려 주세요..
함께 고민하면 방법이 있을지도 모르니까...수고하세요..
어떤 테이블의 필드 하나가 조건에 따라 두가지의 테이블을 물고있습니다.
만약 필드값이 "9"로 시작하면 A테이블을
"G"로 시작하면 B테이블을
SQL문장을 어떻게 구성해야 하나요?
현재 사용하는 SQL문은 다음과 같습니다.
SELECT A FROM 문제의테이믈, ( SELECT * FROM A테이블 UNION SELECT * FROM B테이블 ) C
WHERE 문제의테이블.특정필드=C.특정필드(+)
하지만 속도가 너무 느려요 좋은 해결방법은 없는지
전문가의 조언을 부탁드립니다.
--
답변 :
글쎄요..정확한 상황이 어떤것인지 파악하기가 어렵습니다.
UNIION ALL 을 안쓰고 UNION 을 쓰신걸로 봐서는 A,B테이블이 구조가 같고
같은 DATA값을 가지고 있을 수 있다는 얘긴데..제가 예측한 상황이 맞다면
차라리 먼저 한테이블씩 JOIN을 건후 나중에 UNION 하는것이 오히려
낫겠습니다.
단, JOIN이 걸리는 컬럼이 INDEX 사용가능하다면 말입니다.
그러니까 '9'로 시작하는 것만 조건절로 걸러서 A테이블과 조인을 걸고,
다시 'G'로 시작하는 것만을 조건절로 걸러서 B테이블과 조인을 건후
둘을 UNION 하는것이 좋을거 같습니다.
그렇게 하면 조인이 일어날때 A,B에 있는 INDEX를 이용할 수 있어서
DATA 가 많을 수록 속도에는 효과가 있을 듯 하군요..
그럼...
P.S. 만약 아니라면 상황과 조건을 좀더 소상히 알려 주세요..
함께 고민하면 방법이 있을지도 모르니까...수고하세요..
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
26 | DYNAMIC SQL 이란? (퍼온글 : 출처모름) | 운영자 | 2002.09.17 | 3291 |
25 | PL/SQL에서 ARRAY사용 예제 | 운영자 | 2002.09.17 | 3254 |
24 | 년중 몇번째 주간인지 알아내기(FUNCTION) - ORACLE이 제공하는 것과 다름 | 운영자 | 2002.09.17 | 3733 |
23 | SORT후 번호부여 | 운영자 | 2002.09.17 | 2774 |
» | JOIN 과 UNION 의 선후관계 | 운영자 | 2002.09.17 | 4634 |
21 | 중복 DATA CHECK | 운영자 | 2002.09.17 | 2790 |
20 | crontab 에 오라클 환경변수를 인식시킬때 [1] | 원우석 | 2004.12.06 | 5024 |
19 | oracle proc 에서 stdarg.h파일사용하기위한 환경설정 | 원우석 | 2004.12.06 | 12829 |
18 | 시스템카탈로그에서 프로시져 정보확인 쿼리 | 원우석 | 2004.07.31 | 2976 |
17 | 프로시져생성 문을 실행하는 방법 | 원우석 | 2004.07.31 | 2721 |
16 | 시스템카탈로그에서 테이블 정보확인 쿼리 | 원우석 | 2004.07.31 | 4559 |
15 | DB2 에러 메시지 확인 | 원우석 | 2004.07.31 | 3044 |
14 | 필드 타입케스팅 | 원우석 | 2004.07.31 | 2973 |
13 | 암호화(이름과,암호를 암호화할때) | 원우석 | 2004.07.31 | 2758 |
12 | 결과를 n개 행만을 취할때 | 원우석 | 2004.07.31 | 2561 |
11 | pre컴파일 및 실행계획로그만들기 | 원우석 | 2004.07.31 | 2752 |
10 | CLP 명령모음집 | 원우석 | 2004.07.31 | 2876 |
9 | sql 문 실행명령 | 원우석 | 2004.07.31 | 3567 |
8 | DB2 종료후 다시 시작 | 원우석 | 2004.07.31 | 2936 |
7 | lock 상태 확인 | 원우석 | 2004.07.31 | 4909 |