DB(MySQL, Oracle, PostgreSql)

[MySQL]UPDATE, SELECT문

오므라이스A 2023. 5. 15. 14:48

아래의 쿼리문은 넷 다 같은 업데이트 문임

데이터 량은 약 15000개의 행으로 구성되어있음

 

한 테이블의 정보를 같은 기능의 다른 테이블에 데이터를 똑같이 붙여넣는 작업임

 

※ 23년 5월 25일 추가사항

측정된 시간은 DB가 설치된 서버컴퓨터 연산 성능에 따라 많이 차이날 수 있습니다.

 

1-1. (789.211ms = 약 13분)
UPDATE product_info AS pi, item AS i SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice 
WHERE pi.product_code = i.itemcode

1-2.
UPDATE product_info AS pi INNER JOIN item AS i ON pi.product_code = i.itemcode 
SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice 

 

1-3.

UPDATE product_info AS pi, 
(
SELECT itemcode, regdate, buyprice, saleprice FROM
item WHERE del_f_cd = '0'
) AS i 
SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice 
WHERE pi.product_code = i.itemcode

 

1-4.

UPDATE product_info AS pi 
INNER JOIN 
(
SELECT itemcode, regdate, buyprice, saleprice FROM
item WHERE del_f_cd = '0'
) AS i 
ON pi.product_code = i.itemcode 
SET 
pi.purchase_date = SUBSTR(i.regdate,1,10), 
pi.purchase_price = i.buyprice, 
pi.retail_price = i.saleprice

 

SUBSTR 함수 사용 여부와 관계없이
업데이트해야하는 1개의 행당 약 15000개의 행을 조회해야 하므로
속도 개선을 하지 못하였음

 

** 단발성 업데이트라 그냥 실행하였음

** 서버 사양에 따라 속도 천지 차이남

 

출처 : 직접 작성