union 튜닝 가능한가요? 0 4 122

by 어흥이 [SQL Query] oracle sql [2018.09.13 18:09:03]


안녕하세요

union 시 속도가 안나와서 질문드려요

위아래 테이블이 달라요..이너조인하는 tab2만 같구여.. 

혹시 유니온말고 다르게 할 수도 있을까요?

select a.nm, b.id

from tab1 a, tab2 b

where a.id =b.id

and b.id =1

and b.no =2

union

select a.nm, b.id

from tab3 a, tab2 b

where a.id=b.id

and b.id =1

and b.no =2

and a.cd =11

by jkson [2018.09.13 18:45:18]

실행계획이라도 올려주셔야 왜 느린지 알 수 있겠지요?


by 어흥이 [2018.09.14 10:23:50]

사무실에 인터넷이 안돼서 폰으로 적다보니 코드정렬도 안되고 실행계획도 못 적었네요

속도도 그렇지만 가독성도 떨어져서요

짧게 줄일수 있나 궁금해서 작성해보았습니다.

저렇게 똑같은 쿼리가(테이블은 다르지만 컬럼명은 같음) 두세개 더 붙어있어서염..


by 야신 [2018.09.15 18:37:39]
WITH tmp AS ( SELECT a.nm
              FROM   tab1 a
              UNION ALL 
              SELECT a.nm
              WHERE a.cd = 11
            )
SELECT a.nm
,      b.id
FROM   tmp a
,      tab2 b
WHERE a.id =b.id
AND   b.id = 1
AND   b.no = 2
GROUP BY a.nm, b.id

실행계획이 없어 튜닝을 잘 모르겠지만 이렇게 하시면 좀더 소스는 간결한것 같네요.


by 마농 [2018.09.17 10:20:10]

UNION 과 UNION ALL 의 차이를 알아야 합니다.
 - UNION : 정렬 및 중복제거 작업 발생
 - UNION ALL : 단순 합치기
보통 UNION ALL 을 써야 할 곳에 UNION 을 사용하는 오류를 많이 범합니다.

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