db link 시 속도 저하 문제 0 4 5,404

by 손님 [SQL Query] [2012.02.14 18:21:50]



안녕하세요.

db link로 IF데이터를 끌어오는데 너무 많은시간이 걸립니다.

3만5천건정도 되는 데이터를 가져오는데 35분이 걸리는데 이건 좀,,,,너무하다 싶은데

가져오는 프로시저가 잘못된걸까요?

커서는 db link된 테이블의 플래그 값중 N인걸 불러오는데

이게 35000건 입니다. 그 컬럼에는 인덱스도 걸어놨구요..

그걸 INSERT INTO KOREA2( A,B,C,D)
   (SELECT R.A,  R.B,  R.C,   'Y')
    FROM(SELECT * FROM KOREA@DBLINK 
   WHERE FALG='N'
AND  A@DBLINK=CURSOR.A
AND  B@DBLINK=CURSOR.B
AND  C@DBLINK=CURSOR.C)  R ); 
 이런식으로 넣고 있습니다.

인덱스를 건후에 걸기전보다는 빨라졌는데..

3만5천건에 30분이라니 이건좀 아니다 싶은데 혹시 프로시저가 잘못되어있나요?
by 마농 [2012.02.14 18:30:48]
인덱스는 어떻게 만드셨나요?
a, b, c flag 4개 컬럼 결합으로 만드셔야 할듯.

35000 건을 루프돌리시면 느리죠.
루프 말고 조인쿼리로 한방에 인서트 하는 방식으로 바꿔 보세요.

by 비니 [2012.02.15 09:16:52]
마농님 말씀이 맞아요..
저두 프로시져로 루프로 패치를 해서 한건씩 인서트 하는 방식으로 짰던적이
있는데
insert into TAB select ~ 로 하는것에 비해 속도가 상당히 느립니다.

루프로 돌리지 마시고 한번에 인서트하게 하도록 바꾸시길..

by 손님1 [2012.02.15 11:46:08]
백업유틸을 사용해서 파일로 옮기는 방법은 어떤가요?

by 야신 [2012.02.15 13:05:52]
PLSQL 이라면 Bulk collect 를 사용해보면 어떨가요?
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입