쿼리속도가 느려서 도움좀 부탁드립니다
테이블 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
답변감사합니다. 인덱스를 추가하여서 해결 하였습니다.
인덱스가 어떻게 타는지 정확히 이해가 안되지만....결국 인덱스로 해결이 되었습니다..
감사합니다. 꾸벅!!!
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
까지 넣어서 해결하였습니다.
정확히 이해는 안되네요...ㅡㅡ