SELECT A.TYPE_CD, A.TYPE_NAME, B.FORM_CD, B.FORM_NAME,
0 AS CHK
FROM TF_APP_TYPE_CD A
LEFT OUTER JOIN TF_APP_FORM_CD B ON A.TYPE_CD = B.TYPE_CD
WHERE 1 = 1
AND A.USE_YN = '1'
AND B.USE_YN = '1'
AND A.TYPE_CD || B.FORM_CD NOT IN (
SELECT SUB.TYPE_CD || SUB.FORM_CD
FROM TF_APP_FIN_CHR_SETUP SUB
LEFT OUTER JOIN VW_FIN_DEPT_LEVEL SUB2 ON SUB.DEPT_CD = SUB2.DEPT_CD
WHERE 1 = 1
AND SUB2.DEPT_CD IS NOT NULL
GROUP BY SUB.TYPE_CD, SUB.FORM_CD
)
ORDER BY A.TYPE_CD, B.FORM_CD;
느리다. 느린거로 발견됐다.
원인은 VIEW 에 있었다.
VIEW를 단일로 실행하면 빠르지만 , 해당 쿼리와 함께하면
너무 느린것이다.
이유는 VIEW는 DB_LINK로 연결된 테이블 3종으로 수행되는 쿼리
driving_site 힌트도 안먹는다?
원인은 모라고 테이블과의 조인조건 때문이다.
덤으로 에헤라디야 || 이노마디여 같은 가공조건이 INDEX사용을 방해했다.
SELECT A.TYPE_CD, A.TYPE_NAME, B.FORM_CD, B.FORM_NAME,
0 AS CHK
FROM TF_APP_TYPE_CD A
LEFT OUTER JOIN TF_APP_FORM_CD B ON A.TYPE_CD = B.TYPE_CD
WHERE 1 = 1
AND A.USE_YN = '1'
AND B.USE_YN = '1'
AND (A.TYPE_CD, B.FORM_CD) NOT IN (
SELECT /*+ no_merge */
A.TYPE_CD , A.FORM_CD
FROM (
SELECT SUB.TYPE_CD , SUB.FORM_CD
FROM TF_APP_FIN_CHR_SETUP SUB
LEFT OUTER JOIN VW_FIN_DEPT_LEVEL SUB2 ON SUB.DEPT_CD = SUB2.DEPT_CD
WHERE 1 = 1
AND SUB2.DEPT_CD IS NOT NULL
GROUP BY SUB.TYPE_CD, SUB.FORM_CD
) A
)
ORDER BY A.TYPE_CD, B.FORM_CD
;
no_merge 로 묶어주면 view를 풀지 않고 수행하여 해결 '오라클DBMS > SQL,PL/SQL' 카테고리의 다른 글
[오라클/PLSQL] 테이블 이름이 변경되는 DML문장 (0) | 2013.03.22 |
---|---|
오라클 테이블과 관련 인덱스 일괄 수행 문장 생성 SQL (0) | 2013.02.18 |
[UPDATE] JOIN-VIEW를 이용한 UPDATE시 KEY 대입이 안된다면 (0) | 2011.10.11 |
[SQLPLUS/Shell Script] 쉘스크립트 쿼리 사용시 (0) | 2009.12.14 |
[ORACLE/SQLDeveloper]& 까지 입력하기[바인딩변수] (0) | 2009.11.15 |