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 40390 게시물 읽기
No. 40390
UPDATE문에 대해서 좀 알려 주세요
작성자
선도리(nazzang2231)
작성일
2014-03-01 13:37
조회수
7,289

조직변경이 발생해서 기존의 부문코드와 라인코드를 새 코드로 갱신하는 업데이트문입니다.

 

update t_sale sale -- 판매실적테이블

set ( sale.store_cd,

sale.bumon_cd ) = ( select distinct zozik.store_cd_new,

zozik.bumon_cd_new

from t_zozik_byongyon zozik, -- 조직변경비교데이블

t_product_mst prd -- 상품마스트

where zozik.bonbu_cd_old = prd.bonbu_cd

and zozik.store_cd_old = prd.store_cd

and zozik.bumon_cd_old = prd.bumon_cd

and zozik.line_cd_old = prd.line_cd

and zozik.store_cd_old = sale.store_cd

and zozik.bumon_cd_old = sale.bumon_cd )

where exists ( select 'x'

from t_product_mst prd2 -- 상품마스트

where prd2.store_cd = sale.store_cd

and prd2.bumon_cd = sale.bumon_cd

and prd2.product_cd = sale.product_cd )

and exists ( select 'x'

from t_zozik_byongyon zozik, -- 조직변경비교데이블

t_product_mst prd -- 상품마스트

where zozik.bonbu_cd_old = prd.bonbu_cd

and zozik.store_cd_old = prd.store_cd

and zozik.bumon_cd_old = prd.bumon_cd

and zozik.line_cd_old = prd.line_cd

and zozik.store_cd_old = sale.store_cd

and zozik.bumon_cd_old = sale.bumon_cd )

 

 

-- 조직변경비교데이블

bonbu_cd_old store_cd_old bumon_cd_old line_cd_old bonbu_cd_new store_cd_new bumon_cd_new line_cd_new

01 S100 B100 L100 01 S500 B100 L100

01 S200 B200 L200 01 S600 B500 L200

01 S300 B301 L301 01 S700 B600 L301

01 S300 B302 L302 01 S700 B302 L302

 

-- 상품마스트(t_product_mst)

bonbu_cd_old store_cd_old bumon_cd_old line_cd_old product_cd

01 S100 B100 L100 P001

01 S100 B100 L100 P002

01 S200 B200 L200 P003

01 S300 B301 L301 P004

01 S300 B302 L302 P005

01 S400 B400 L400 P006

 

-- 판매실적테이블(t_sale) --> 갱신전

store_cd bumon_cd product_cd

S100 B100 P001

S100 B100 P002

S200 B200 P003

S300 B301 P004

S300 B302 P005

S400 B400 P006

 

-- 판매실적테이블(t_sale) --> 갱신후

store_cd bumon_cd product_cd

S500 B100 P001

S500 B100 P002

S600 B500 P003

S700 B600 P004

S700 B302 P005

S400 B400 P006

 

판매실적테이블(t_sale)에 대량의 데이터가 존재함으로 성능 개선이 필요하게 됐습니다.

 

1. MERGE INTO(UPSERT)문을 사용해서 성능을 향상 시킬수 있는 sql문

2. 특별히 MERGE INTO(UPSERT)문이 아니더래도 성능을 향상 시킬수 있는 sql문이나 다른 방법

3. sql조건에 대해서도 좀 알려주세요. 초보라 sql문 자체가 잘 이해가 되지 않네요.

set문과 where문의 조건이 똑같지 않습니다. 똑같이 않써도 특별히 문제가 되진 않나요?

밑에 처럼 set문과 where문의 조건을 똑같이 해야 되는거 아닌가요?

 

update t_sale sale -- 판매실적테이블

set ( sale.store_cd,

sale.bumon_cd ) = ( select distinct zozik.store_cd_new,

zozik.bumon_cd_new

from t_zozik_byongyon zozik, -- 조직변경비교데이블

t_product_mst prd -- 상품마스트

where zozik.bonbu_cd_old = prd.bonbu_cd

and zozik.store_cd_old = prd.store_cd

and zozik.bumon_cd_old = prd.bumon_cd

and zozik.line_cd_old = prd.line_cd

and zozik.store_cd_old = sale.store_cd

and zozik.bumon_cd_old = sale.bumon_cd

and exists ( select 'x'

from t_product_mst prd2 -- 상품마스트

where prd2.store_cd = sale.store_cd

and prd2.bumon_cd = sale.bumon_cd

and prd2.product_cd = sale.product_cd ) )

where exists ( select 'x'

from t_product_mst prd2 -- 상품마스트

where prd2.store_cd = sale.store_cd

and prd2.bumon_cd = sale.bumon_cd

and prd2.product_cd = sale.product_cd )

and exists ( select 'x'

from t_zozik_byongyon zozik, -- 조직변경비교데이블

t_product_mst prd -- 상품마스트

where zozik.bonbu_cd_old = prd.bonbu_cd

and zozik.store_cd_old = prd.store_cd

and zozik.bumon_cd_old = prd.bumon_cd

and zozik.line_cd_old = prd.line_cd

and zozik.store_cd_old = sale.store_cd

and zozik.bumon_cd_old = sale.bumon_cd )

 

고수님들의 의견을 좀 부탁드립니다.

 

 

 

[Top]
No.
제목
작성자
작성일
조회
40393쿼리 관련해서 도움을 좀 부탁드립니다. [1]
질레판
2014-03-05
6871
40392오라클 SQL에서 해당 컬럼내용이 영문인지 한글인지 알수 있을까요? [1]
일쌍다반사
2014-03-04
11311
40391성능개선 update문 질문2
선도리
2014-03-01
6675
40390UPDATE문에 대해서 좀 알려 주세요
선도리
2014-03-01
7289
40389PL/SQL 프로시저 수행 관련 문의드립니다.
김수정
2014-02-28
6810
40388Oracle Export 기능에 대해서 질문드립니다.
김동산
2014-02-27
6806
40387엑셀 수식을 오라클로 변환하고싶습니다 [1]
매수신호
2014-02-24
7801
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다