Django ORM (QuerySet)구조와 원리 그리고 최적화전략 - 김성렬 - PyCon Korea 2020
전체 쿼리셋을 불러오고 그 중 하나의 값만 불러오게 코드를 작성하면 하나의 값만 쿼리셋은 결국 불러오게 만듭니다. 그러나 이런 방법이 오히려 독이 될 수 있기도 한데,
똑같은 코드를 모든거로 다시 불러오게 되면 비효율적으로 된다.
모든 유저를 쿼리셋에서 먼저 호출을 하고 다시 일부분마 호출하면,
모든 유저가 캐싱되어 있기 때문에 첫번째 유저만 가져올때는 모든 유저의 정보를 가져오는 경우 캐쉬에서 가져오게 된다.
N+1 Problem을 해결하기 위해서 Django에서는 select_related()와 prefetch_related()라는 메소드를 제공한다.
1개의 쿼리와 0~N개의 추가쿼리(셋)로 구성되어있다.
QuerySet 하나의 최소한 쿼리를 가지고 있고