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 40353 게시물 읽기
No. 40353
update하려는데 너무 속도가 안나오네요.
작성자
야간비행(야간비행)
작성일
2014-01-03 18:27
조회수
7,438
하기 처럼 TB_PARENT에서 조회해온 값으로 TB_CHILD의 컬럼을 수정하려고 하는데
너무 시간이 오래 걸리네요..PARALLEL까지 사용했는데도요..
 
TB_CHILD가 데이터가 엄청 많거든요 약1억건정도..
그리고 TB_PARENT에서 조회해온 데이터는 약 4만건정도....
 
1억건정도 되는 TB_CHILD 테이블의 4만건을 조회한 데이터를 UPDATE하려하니 너무 느리네요..
빠른 update 방법없을까요?
 
UPDATE /*+ PARALLEL(a, 8) */ TB_CHILD a
SET  a.code = (
                             SELECT   b.code
                                 FROM  TB_PARENT b
                             WHERE   b.id = a.id
                           )

 

 

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

UPDATE TB_CHILD a

SET a.code = (

SELECT b.code

FROM TB_PARENT b

WHERE b.id = a.id

)

WHERE exists ( SELECT 'x'

FROM TB_PARENT b

WHERE a.id = b.id

)

채용근(taiji97)님이 2014-01-03 18:43에 작성한 댓글입니다.

 알려주신데로 해봣는데도 너무 느리네요...

1억건 중에 4만건 update하는건데 아...방법이 뭐가 좋을까요 고수님들 부탁드립니다.

야간비행(야간비행)님이 2014-01-04 10:36에 작성한 댓글입니다.

일단 사용하신 쿼리는 조건절이 없기 때문에 1억건 모두를 갱신합니다.
조건절을 주셔야 하는데, Exists 또는 In 절을 주시면 되구요.
UPDATE tb_child a
   SET a.code = (SELECT b.code FROM tb_parent b WHERE b.id = a.id)
 WHERE a.id IN (SELECT b.id FROM tb_parent b)
;
IN 절을 줬느데도 느리다면 Merge 문을 사용해 보세요.
MERGE INTO tb_child a
USING tb_parent b
ON (b.id = a.id)
WHEN MATCHED THEN
UPDATE SET a.code = b.code
;

마농(manon94)님이 2014-01-06 09:26에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40356기간 조회하는 where 조건이 헷갈리네요 [2]
질럿
2014-01-07
7116
40355안녕하십니까? 궁금한게 하나 있어 글을 올립니다. [3]
황인준
2014-01-07
7373
40354여러건이면 NULL 단일 데이터이면 단일 데이터 리턴 할 수 있는 쿼리가 있을까요? [3]
R
2014-01-07
7097
40353update하려는데 너무 속도가 안나오네요. [3]
야간비행
2014-01-03
7438
4035211g DataGuard구성적용을 위한 변경
이태훈
2014-01-02
6662
40351똑같은 SQL문인데 함수 내부에서 돌아가면 느릴수도 있나요? [3]
김대윤
2013-12-26
7386
40350pl/sql 플랜 볼수 있나요? [1]
김대윤
2013-12-26
6910
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다