안녕하세요~ 매번 답변에 감사드려요
쿼리를 수정하다 풀리지 않는 부분이 생겨서 질문 드립니다.
아래와 같이 ST1테이블과 ST2테이블을 조인해서 T1의 AA코드와 같은 코드명을 가지고 와야 하는데요
서브쿼리 ST1을 조회를 하니 FULL SCAN을 하더라구요
ST1에 데이터량이 많아 AA컬럼이 PK여서 INDEX UNIQUE SCAN을 하고 싶은데 잘 안되서요
ST2도 마찬가지구요 방법이 없을까요?
그리고 한가지 더 37000건을 조회 하는데 5초가 걸려요 정렬한것 때문에 그런데
해결할 수 있는 방법이 있을까요?
코드가 징그럽게 많네요;;;
SELECT A,B,C,T2.A코드명, T3.B코드명, T4.C코드명 FROM T1
LEFT OUTER JOIN T2 ON T1.A코드=T2.A코드
LEFT OUTER JOIN T3 ON T1.B코드=T3.B코드
LEFT OUTER JOIN (SELECT C코드, 코드명 FROM ST1
UNION
SELECT C코드, 코드명 FROM ST2) T4 ON T1.C코드=T4.C코드
ORDER BY T1.A DESC , T1.B, T1.C
그렇다면 유니온 하지 마시고
각각 아우터 조인한후에
Select 절에서 NVL 처리 하시면 됩니다.
SELECT T1.A, T1.B, T1.C , T2.A코드명 , T3.B코드명 , NVL(ST1.C코드명, ST2.C코드명) C코드명 FROM T1 LEFT OUTER JOIN T2 ON T1.A코드 = T2.A코드 LEFT OUTER JOIN T3 ON T1.B코드 = T3.B코드 LEFT OUTER JOIN ST1 ON T1.C코드 = ST1.C코드 LEFT OUTER JOIN ST2 ON T1.C코드 = ST2.C코드 ORDER BY T1.A DESC, T1.B, T1.C ;