N+1 문제라고도 하는 ORM을 사용할시 정말로 주의해야하는 문제점이다. 이가 문제가 해결이 안되는건 아니지만 반복되는 쿼리를 통해서 더많은 DB 조회를 하게되고 최종적으로 성능을 떨어트리는 쿼리를 만드는 문제이다. (특징만 말했으니 빨리 설명을 보자.)
연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수 (n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 현상
Lazy Loading 이던 Eager Loading
books = Book.objects.order_by('title')
for book in books:
print(book.title, 'by', book.author.name)
이 흐름의 순서를 기억해보자.
즉 쿼리를 하나만 실행하는게 아니라 2개를 실행하게 되는 문제점이다.
외래키와 연결된 데이터도 가져올 수 있는 쿼리를 보낸다. Django에서는 select_related() , prefetch_related()가 존재한다.