오라클 튜닝 0 5 829

by 신성철 [SQL Query] 튜닝 인덱스 [2018.06.26 11:44:36]


쿼리속도가 느려서 도움좀 부탁드립니다

테이블  TAB1 (전표기본) ,  TAB2(전표상세)  가 있습니다.

TAB1 는 KEY 가    SAUP_CODE(사업장)   , BAL_DEPT_CODE(부서) , BAL_ILJA(일자)  , BAL_NO (번호)

TAB2 는 KEY 가    SAUP_CODE             , BAL_DEPT_CODE          , BAL_ILJA        , BAL_NO           , HANG_NO  (행번호)

입니다.

그런데 전표가 확정처리되면  TAB1  테이블의 AC_ILJA(전표확정일자) , AC_NO(전표확정번호)  컬럼에  전표확정일자, 확정번호를 SETTING 해줍니다.

그런후 아래처럼 전표확정일자 기준으로 기간을 조회하면 조회시간이 10 초이상 걸리네요...(조회기간에 따라 다르긴 합니다. )

AND  A.AC_ILJA       BETWEEN :AD_ILJA1 AND :AD_ILJA2

이부분을

AND  A.BAL_ILJA      BETWEEN :AD_ILJA1 AND :AD_ILJA2

변경하면 빨라짐니다..   그런데 저는 전표등록번호가 아닌, 확정일자로 조회하고 싶은 거거든요 ...

인덱스를 어떻게 잡아야 될지 모르겠네요 ...여러가지 방법으로 인덱스 잡아봤지만 여전히 느립니다.

고수님들 조언좀 부탁드립니다.

 

SELECT 
  B.PIL1 ,
  B.PIL2
FROM  tab1 A , 
          tab2 B 
WHERE A.SAUP_CODE     = B.SAUP_CODE
AND  A.BAL_DEPT_CODE  = B.BAL_DEPT_CODE
AND  A.BAL_ILJA             = B.BAL_ILJA
AND  A.BAL_NO              = B.BAL_NO
AND  A.AC_ILJA       BETWEEN :AD_ILJA1 AND :AD_ILJA2
GROUP BY B.PIL1, B.PIL2

by 우리집아찌 [2018.06.26 12:00:36]

테이블 TAB1 에 AC_ILJA 대한 인덱스를 추가하신건가요?

 


by 신성철 [2018.06.26 13:04:03]

네 .    AC_ILJA 하나로 인데스 추가해보기도 하고....

추가로    AC_ILJA ,  SAUP_CODE   , BAL_DEPT_CODE  ,BAL_ILJA  , BAL_NO 로 인덱스 생성도 해보았습니다.

구조적으로 인덱스로 해결이 안되는걸까요?
 

 


by 우리집아찌 [2018.06.26 13:34:37]

TAB2 의 PIL1 , PIL2만 필요하신건가요?

TAB1 과 JOIN은 필요없을것 같은데요.

SAUP_CODE , BAL_DEPT_CODE , BAL_ILJA , BAL_NO등은 조건이 따로 없으신가요?


by 마농 [2018.06.26 13:26:06]

데이터가 많아서 느린건 아닌지요?


by 신성철 [2018.06.26 14:11:12]

답변감사합니다.  인덱스를 추가하여서 해결 하였습니다.

인덱스가 어떻게 타는지 정확히 이해가 안되지만....결국 인덱스로 해결이 되었습니다..

감사합니다.  꾸벅!!!

 

SELECT
  B.PIL1 ,
  B.PIL2
FROM   TAB1  A , 
           TAB2  B 
WHERE A.SAUP_CODE     = B.SAUP_CODE
AND  A.BAL_DEPT_CODE = B.BAL_DEPT_CODE
AND  A.BAL_ILJA      = B.BAL_ILJA
AND  A.BAL_NO        = B.BAL_NO
AND  A.AC_ILJA       BETWEEN :AD_ILJA1 AND :AD_ILJA2
AND  B.SAYONG_CODE   LIKE  :AS_SAYONG_CODE ||'%'
GROUP BY B.PIL1, B.PIL2

아까 질문엔 색갈 넣은부분을 명시 안했었는데요..

TAB2 테이블에 인덱스를     SAUP_CODE   , BAL_DEPT_CODE  ,BAL_ILJA  , BAL_NO , SAYONG_CODE

까지 넣어서 해결하였습니다.

정확히 이해는 안되네요...ㅡㅡ

 


 

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