query tuning(3) insert where

joojong·2023년 9월 24일
0

쿼리튜닝

목록 보기
3/3

기존 방법

DeliveryEntity delivery = this.deliveryRepository.findByTitle(title);
if (delivery == null) {
	DeliveryEntity newDelivery = new DeliveryEntity();
    newDelivery.setTitle("title1");
    this.deliveryRepository.save(newDelivery);
}

jpa를 사용할 때 위와 같이 조회 한 이후에 없을 경우 생성해주곤 하는데 이렇게 할 경우 db를 두번 타야 한다.

임시 테이블을 활용

insert into `delivery` (
	title
) select
'title1'
from dual
where not exists (
	select
    title
    from `delivery`
    where title = 'title1'
    limit 1
)

임시 테이블에서 값을 찾아준 뒤에 insert해주면 된다.

pk로 insert를 하는 경우

insert ignore into `delivery` (`id`,`title`) values (1,'title1')

insert ignore into -- ignore만 붙여주면 된다.

profile
Back-end developer

0개의 댓글