SELECT
/*+
INDEX(A MSTID_PK)
INDEX(B MSTID_PK)
INDEX(C MSTID_UK)
A.ID, B.ID, C.ID
*/
FROM A@DBLINK A , B@
DBLINK B , C
@DBLINK C
WHERE A.MSTID = B.MSTID
AND A.MSTID = C.MSTID
AND A.DATE = '20120601'
뭐 이런식의 단순한 쿼리문입니다. (실제 테이블 8개정도 조인합니다.)
위 쿼리는 전부 DB링크 걸린 테이블입니다. 실행 시 1~2초가량이면 데이터가 나오는데요.
그런데 아래와 같이 저상태에서 제 테이블에 PROC과 조인하면 1분~5분까지 걸립니다. ㅠㅠ
AND A.MSTID = D.MSTID 일 경우 조금 더 빠르고
AND A.MSTID <> D.MSTID 일 경우 훨씬 많이 걸리네요.
SELECT
/*+
INDEX(A MSTID_PK)
INDEX(B MSTID_PK)
INDEX(C MSTID_UK)
A.ID, B.ID, C.ID
*/
FROM A@DBLINK A , B@ DBLINK B , C @DBLINK C , PROC D
WHERE A.MSTID = B.MSTID
AND A.MSTID = C.MSTID
AND A.MSTID = D.MSTID
AND A.DATE = '20120601'
인덱스가 걸려있는것은 확인했는데 속도 차이가 너무나 많이 나네요.
제 테이블과 조인거는 순간 링크쪽 인덱스를 인식 못하는건가..
이런경우에는 어떻게 해줘야할까요?