https://leffept.tistory.com/312

Selected_related 란 ?

Selected_related는 SQL Query 문의 JOIN 을 사용하여 foreign-key(one to one, many to one)를 사용하여 정참조할 때 사용하며 QuerySet을 가져올 때, 미리 related objects까지 불러오는 함수이다.비록 쿼리는 복잡해지지만 불러온 data들은 데이터베이스 서버가 종료되기 전 까지 Cache에 남게되어 매 쿼리마다 DB에 접근하지 않아도 된다.

→ eager loading (sql 디비에서 연산)

→ 정참조만 가능

→ 1:N , 1:1

Prefetch_related 란?

prefetch_related는 selected_related와 같이 data를 Cache에 저장하며, 모든 relationships에서 사용이 가능하다.

Selected_related  vs  Prefetch_relatedSelected_related는 하나의 Query로 related Objects들을 불러오지만, Prefetch_related는 main query가 실행이 된 후 별도의 query가 실행이 된다. 따라서 1번 이상 쿼리가 진행되기 때문에가급적 selected_related를 사용하는 것이 리소스 소모를 줄일 수 있다,

→ lazy loading( 파이썬 서버에서 연산)

→ 역참조 가능

→ 1:N, N:M