Search

N+1

잘못된 쿼리, OneToMany, ManyToOne, bulk insert/delete 등의 상황에서 발생한다.

Bulk delete

JPQL 또는 배치 옵션으로 처리 가능

ManyToOne

fetch join

OneToMany

fetch join 을 걸면 처리 가능하지만 불필요한 중복 데이터 조회, inner 조인
JPQL join 쓰면 불필요한 데이터 조회
batch fetch size 옵션 or JPQL in 절 활용

반정규화

동시성 문제 발생할 가능성

fetch type EAGER

JPQL(repository 의 쿼리 메서드(findAll, findByName), @Query) 을 이용하면 N+1 발생!
findById 는 left outer join 으로 가져옴!