Programing

PostgreSql 다중 업데이트

handam 2021. 5. 12. 18:41

update or insert 를 처리할 수 있는 upsert 문에서 다 건의 데이터를 처리할 순 없었다.

 

2개의 List 객체를 초기화 하고 신규 데이터와 기존 데이터로 분리, 그리고 각각 일괄로 처리 하였다.

 

update multi rows sample 1

update test as t set	--업데이트 하고자 하는 테이블 t
    column_a = c.column_a
from (
values
    ('123', 1),	--업데이트 데이터 row_1
    ('345', 2)  --업데이트 데이터 row_2
) as c (column_b, column_a) --업데이트 가져오는 테이블 c
where c.column_b = t.column_b;

 

update multi rows sample 2

update test as t set
    column_a = c.column_a,
    column_c = c.column_c
from (
values
    ('123', 1, '---'),
    ('345', 2, '+++')  
) as c (column_b, column_a, column_c) 
where c.column_b = t.column_b;

 

50건의 데이터를 가지고 있는 List 처리 속도와 2건의 데이터를 가지고 있는 List 처리 속도를 비교해보니 느리진 않았다.

 

오히려 50건의 다중 건을 처리하는데 40~50%는 빨라질 거라는 기대는 무너졌달까.

 

기존 for loop 를 통한 50건의 단 건 upsert 문 처리 시간에 비해, 한 방에 50건의 다 건 update 문이 1~2초 정도.

 

그래도 이런 데이터가 1,000건 실행되면 1,000초나 빨라진다 생각하니 나쁘지 않다.

 

 

 

반응형