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 21999 게시물 읽기
No. 21999
전체업데이트할때 속도여....
작성자
도와주세요.
작성일
2005-03-15 10:53
조회수
2,227

데이타를 전체 업데이트를 할려고 합니다.

where절을 걸어서 하나하나 하면 되는데 전체 업데이트를 하니 속도가 너무 느리네요

데이타는 129,000건정도 입니다.

 

아래 내용을 실행하면 토드가 죽어버리는데 다른 방법이 없을까여?

====================================================================================

UPDATE order_product O SET (date2, date3, date4, date10)
= (SELECT TO_CHAR( regdate, 'YYYY-MM-DD HH24:MI:SS')as regdate, TO_CHAR( getmoneydate, 'YYYY-MM-DD HH24:MI:SS')as getmoneydate, TO_CHAR( senddate, 'YYYY-MM-DD HH24:MI:SS')as senddate, TO_CHAR( canceleddate, 'YYYY-MM-DD HH24:MI:SS')as canceleddate
FROM ec_order L
WHERE O.order_cd = L.xxid
)

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

merge 를 사용하실 수 없는 버전이십니까?

만약 사용 가능한 버전이면 merge를 쓰십시오.

성능이 향상됩니다.

김흥수(protokhs)님이 2005-03-15 11:05에 작성한 댓글입니다.

ec_order  의 xxid 컬럼에 인덱스가 있습니까?

님께서 말씀하신 형태의 테이블로 제가 약 13만 건 갱신 해보니

PC급에서 약 24초 걸렸습니다.

 

아래에 테스트 결과 입니다.

 

SQL> select current_timestamp from dual;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
05/03/15 11:42:08.109000 +09:00

SQL> UPDATE order_product O
  2  SET (date2, date3, date4, date10)
  3  = (
  4   SELECT
  5    regdate,
  6    getmoneydate,
  7    senddate,
  8    canceleddate
  9   FROM ec_order L
 10   WHERE O.order_cd = L.xxid
 11  )
 12  /

132000 행이 갱신되었습니다.

SQL> select current_timestamp from dual;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
05/03/15 11:42:32.812000 +09:00

SQL> rollback;

롤백이 완료되었습니다.

SQL> select current_timestamp from dual;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
05/03/15 11:43:00.671000 +09:00

SQL> update (
  2  select date2, date3, date4, date10,
  3    regdate,
  4    getmoneydate,
  5    senddate,
  6    canceleddate
  7  from order_product o,
  8    ec_order l
  9  where O.order_cd = L.xxid
 10  )
 11  set
 12   date2 = regdate,
 13   date3 = getmoneydate,
 14   date4 = senddate,
 15   date10 = canceleddate
 16  /

132000 행이 갱신되었습니다.

SQL> select current_timestamp from dual;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
05/03/15 11:43:27.765000 +09:00

SQL> spool off

김흥수(protokhs)님이 2005-03-15 11:50에 작성한 댓글입니다.

김흥수님

제가 ms-sql쪽 데이타를 오라클로 가져온거라서..

인덱스를 미리 생각 못했네요.

감사합니다.

좋은 하루 보내시길 바랍니다.

도와주세요.님이 2005-03-15 13:09에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
22002쿼리에 대한 기본개념을 흔들어 버린 쿼리 [8]
이무용
2005-03-15
3482
22001Sql 바인딩. [5]
유성
2005-03-15
7332
22000테이블 파티션 할때 unique index 는 어떻게 생성하나요?
서지수
2005-03-15
2337
21999전체업데이트할때 속도여.... [3]
도와주세요.
2005-03-15
2227
21998CLOB타입에 XML데이타 가져오기
우웅
2005-03-15
1935
21997프로시저에서 프로시저 호출하기.. [2]
오정민
2005-03-15
2634
21996윈도우 2003서버에서 isqlplus 실행이 안되네여~ [1]
이충관
2005-03-15
1887
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다