일단 먼저 말씀드릴 것은 분명 메인쿼리의 FROM 절에 T_GT300 C 테이블이 있는데 이 테이블은 그 어느 테이블과도 조인이 되지 않고 있습니다. 이럴경우 로우가 C테이블에 있는 로우수 만큼 카티젼곱이 일어나는데 이게 의도하신 것인지 아니면 실수하신 것인지 살펴보시고요
아래 두 쿼리를 실행해서 비교해 보시기 바랍니다.
테이블 스키마도 없고 실행계획도 없고 해서 제대로 테스트해 본 것은 아니어서
더 빠른 결과를 가져온다라고는 자신있게 말씀드리지 못하겠네요.
질문하신 분이 그 부분에 대해서는 잘 알고 계시므로 조금씩 변경해 가면서 테스트해보시기 바랍니다.
<1>
SELECT B.DEPT_NM,
SEL.JS_DTE,
SEL.JS_NO,
SEL.D_GUM,
SEL.C_GUM,
SEL.JS_NAME,
SEL.HG_DTE,
SEL.HG_NO,
A.REMK,
DECODE(A.DCGB, '1', A.HG_GUM, '0') SB_D_GUM,
DECODE(A.DCGB, '2', A.HG_GUM, '0') SB_C_GUM,
A.ACCD,
C.ACNM
FROM T_HG110 A,
T_GT130 B,
T_GT300 C,
WHERE A.JS_YM = '200709'
AND A.SA_DEPT = '100700'
AND A.HG_DEPT = '100000'
AND A.ACCD='422010'
AND A.JS_YM='200709'
AND A.HG_DEPT=B.HG_DEPT
AND A.SA_DEPT = B.DEPT
AND (A.HG_DEPT,A.SA_DEPT,A.JS_YM,A.JS_NO)
IN(
SELECT HG_DEPT,JS_DEPT,JS_YM,JS_NO
FROM T_HG110A B
WHERE B.HG_DEPT='100000'
AND B.JS_DEPT='100700'
GROUP BY HG_DEPT,JS_DEPT,JS_YM,JS_NO
)
<2>
SELECT B.DEPT_NM,
SEL.JS_DTE,
SEL.JS_NO,
SEL.D_GUM,
SEL.C_GUM,
SEL.JS_NAME,
SEL.HG_DTE,
SEL.HG_NO,
A.REMK,
DECODE(A.DCGB, '1', A.HG_GUM, '0') SB_D_GUM,
DECODE(A.DCGB, '2', A.HG_GUM, '0') SB_C_GUM,
A.ACCD,
C.ACNM
FROM T_HG110 A,
T_GT130 B,
T_GT300 C,
WHERE A.JS_YM = '200709'
AND A.SA_DEPT = '100700'
AND A.HG_DEPT = '100000'
AND A.ACCD='422010'
AND A.JS_YM='200709'
AND A.HG_DEPT=B.HG_DEPT
AND A.SA_DEPT = B.DEPT
AND EXISTS(
SELECT 'X' FROM T_HG_DEPT B
WHERE B.HG_DEPT=A.HG_DEPT
AND B.JS_DEPT=A.JS_DEPT
AND B.JS_YM=A.JS_YM
AND B.JS_NO=A.JS_NO
)