서브쿼리 아우터조인으로 ( 디비링크, 선분이력조인) 0 2 3,888

by chrome [SQL Query] 디비링크 선분이력조인 서브쿼리전환 [2014.03.26 16:36:40]


select a.col1
,a.col2
,b.col1
(
select max(d.cola) 
from tabled@dblink d
where d.cola < a.cola
)
from (select a.col1, c.col2
from tablea,tablec) a,
tableb
where ...

이런식의 쿼리입니다.
문제는 서브쿼리로 사용된 디비링크 인데 
디비링크 접속부하로 성능이 많이 떨어지네요.

join으로 변경할 마땅한 방법이 떠오르지 않습니다 ㅜ.ㅜ 

tablea와 tableb는 대량에서 join을 거치면서 소량이 되어서 
리모트 서버에서 처리하고 싶지만 마땅한 방법이 없습니다.
(외에도 디비링크 연결이 두군데는 더 들어가네요 ㄷ ㄷ ) 
by 부쉬맨 [2014.03.27 09:34:14]
이런경우 흠냠..
제가 아는 디비링크 팁을 알려드리자면

일단 저 쿼리로 보앗을경우
max 하나의 값만 가져오게 되어있네요..
그렇다고하면 drive_site db링크 흰트를 주어서 대상(링크가 되어지는) 디비의 인덱스를 타게하는 방법입니다.
맥스로 하면 index_desc, index_asc 를 주면 훨씬 성능효과가 있습니다.

아니면 hash 로 돌리는 방법이 더 좋습니다.
괜한 range스캔이라든지 타면 더 성능부하가 생깁니다.

by chrome [2014.03.27 12:18:07]
답글 고맙습니다.
현재 그 부분의 문제 해결을 위해 조인 조건으로 바꾸고 싶으나
key join이 아닌 컬럼의 < 조건이라 
마땅한 방법이 생각나질 않습니다 ㅜ.ㅜ 
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입