database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41305 게시물 읽기
No. 41305
* UPDATE시 어떤게 속도가 빠른지 잘 몰라서 질문드립니다.
작성자
소프
작성일
2016-12-27 13:29
조회수
5,970

* UPDATE시 어떤게 속도가 빠른지 잘 몰라서 질문드립니다.

 
 UPDATE /*+ bypass_ujvc */
    (  
        SELECT
            A.PROC_CD, DECODE(B.TYPE, 1, 'SP', 2, 'RP', 3, 'RE') as NEW_PROC_CD
        FROM MASTER A, AFFILIANT B
        WHERE A.CED = B.CED
          AND A.XDFD = 'XX'
          AND A.START_DAY >= '20161212'
          AND TO_DATE(B.EVENT_START_DAY) BETWEEN TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD')) AND  TO_DATE(TO_CHAR(ADD_MONTHS(SYSDATE, 6), 'YYYYMMDD'))
          AND NVL(A.TYPE, '1') <> B.TYPE
    ) SET
        PROC_CD = NEW_PROC_CD;
        
    COMMIT;
 
** MASTER A(200만건), AFFILIANT B(100만건)
한번에 UPDATE를하려고 위와같이 하였으나 속도가 너무 느린것 같습니다.
 
AFFILIANT 테이블 기준으로
Cursor CUR_INS IS 거서에 담아서 LOOP돌면서 UPDATE하는게 더 빠를까요?
 

 

이 글에 대한 댓글이 총 3건 있습니다.

갱신 방법 이전에 조회 쿼리의 날짜 조건 처리 방법에 문제가 있네요.
 - 컬럼을 가공하여 조건값에 비교하는 것보다는
 - 컬럼은 그대로 둔채 조건값을 가공하여 컬럼에 맞춰주는 게 좋습니다.
날짜 함수 to_date 의 사용법에도 문제가 있네요.
 - 날짜 포멧 지정 없이 사용된 날짜변환 함수는 잠재적인 오류 가능성을 가집니다.
 - 날짜 변환 함수 사용시 포멧 지정 필수입니다.
bypass_ujvc 힌트는
 - 11G 부터는 사용 못합니다.
제시하신 건수 200만건, 100만건은
 - 전체 건수인가요?
 - 실제 업데이트 대상 건수는?

마농(manon94)님이 2016-12-28 13:44에 작성한 댓글입니다.

데상 건수는 대략 60만건 정도 됩니다.

소프님이 2016-12-28 15:22에 작성한 댓글입니다. Edit

마농님 말씀에 추가로..

추후 관리상의 문제와 성능상으로도

bypass_ujvc 보다는 merge문이 나을 것 같고요.

parallel 힌트 사용하시면 더 빠르게 update 가능합니다.

 

http://hoonsik69.tistory.com/entry/%EB%8C%80%EB%9F%89-UPDATE-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%ED%95%98%EB%8A%94-%EA%B5%AC%EB%AC%B8

 

이 글 참조하세요.

손재균(iikii)님이 2016-12-29 10:08에 작성한 댓글입니다.
이 댓글은 2016-12-29 11:04에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41308[쿼리 문의] 같은 키 다른 데이터가 있는 레코드만 뽑을 수 있을까요? [3]
MI
2017-01-08
5538
41307db이중화 관련 db테이블 내 내용 수정 질문 드립니다 [1]
아르카
2017-01-07
5388
41306날짜형식 관련 질문드립니다. [3]
서범석
2017-01-06
5740
41305* UPDATE시 어떤게 속도가 빠른지 잘 몰라서 질문드립니다. [3]
소프
2016-12-27
5970
41303슈퍼 울트라 초대용량 테이블 빠르게 초기화하는 방법
김익서
2016-12-20
6176
41302oracle 10g 윈도우용 가지고계신분!!
서범석
2016-12-19
5592
41301clob 컬럼에 insert 시 [문자열이 너무 깁니다.] 에러 발생합니다.
초보자
2016-12-15
6966
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다