SQL의 JOIN을 사용하여 하나의 QuerySet을 가져올 때, 미리 related objects 들까지 다 불러와주는 함수이다. 불러온 data들은 모두 cache에 남아있어 다시 DB에 접근해야 하는 수고를 덜어줄 수 있다.
JOIN의 특성상 foreign-key, one-to-one 과 같은 single-valued relationships에서만 사용이 가능하다. (정참조 관계, foreign-key가 있는 곳에서 foreign-key를 참조하는 값을 불러올때)
prefench related 는 foreign-key, one-to-one을 포함하여 many-to-many, many-to-one 등 모든 relationships에서 사용가능하다. (정참조, 역참조 모두 사용 가능하며 역참조 일 시 _set을 사용하여 역참조를 나타낸다)
(이 관계가 잘 정리 되있는 페이지
https://jupiny.tistory.com/entry/selectrelated%EC%99%80-prefetchrelated
https://blog.myungseokang.dev/posts/django-query-optimization/ )