대량의 데이터 UPDATE 에 관하여 조언 부탁드립니다. 0 1 2,068

by 메티 [2008.07.05 16:41:58]


UPDATE /*+ bypass_ujvc */
    (SELECT /*+ FULL(UC) FULL(NP) USE_HASH(UC, NP) PARALLEL(UC,4) PARALLEL(NP,4) */ UC.CALLED_CRR_CD CALLED_CRR_CD,
            NP.CHG_AFTR_CARR CHG_AFTR_CARR
    FROM TOS_DMST_DLY_DTL_11 UC,
         TOS_TELNO_MVM_INFO NP
    WHERE UC.CALLED_NO = SUBSTR(NP.TEL_NO,1,12)  AND
          UC.CALLED_CRR_CD != NP.CHG_AFTR_CARR AND
          (UC.USG_STRT_DT || UC.USG_STRT_TM) >=  NP.STRT_DTTM AND
          (UC.USG_STRT_DT || UC.USG_STRT_TM) < NP.END_DTTM)
SET CALLED_CRR_CD = CHG_AFTR_CARR   

두 테이블이 대략 각각 3000만건 이상입니다...

쿼리 실행시 시간이 너무 오래 걸려서...많은 분들의 조언을 구하러 왔습니다.~

그럼 수고하세요~

by 현 [2008.07.05 20:23:39]
이렇게 대량의 건이라면 업데이트 보다는 새로운 테이블에 ctas로 데이터를 만들어 놓은 후 그 데이터를 입력하는 방식으로 처리하시는 편이 유리할 수 있습니다.
특히나 인덱스가 있다면 시간은 훨씬 많이 걸릴 겁니다.
주어진 쿼리로는 정보가 너무 부족하여 딱히 뭐라 드릴 말씀이 없네요...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입