[답변]쿼리 튜닝 부탁드립니다. 0 0 1,765

by 김강환 [2007.09.20 13:03:25]


일단 먼저 말씀드릴 것은 분명 메인쿼리의 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
 )

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