TIL#75 select_related

Dasom·2020년 9월 28일
0

Django

목록 보기
10/34

1차 프로젝트가 끝난 후 조금 더 심화된 QuerySet 에 대해 공부하기 시작하였는데 너무 어렵다. 마치 장고를 처음 접했을 때의 느낌이랄까...😇 데이터베이스를 조금 더 효율적으로 다룰 수 있는 방법이 있고, 그런 것들을 알고 코드를 써야 더 효율적인 코드가 되는 건데 아직은 너무 어렵고 갈길이 멀다😂

select_related 는 SQL join 을 생성하고 SELECT 문에 관련 객체의 필드를 포함시켜 작동한다. 동일한 DB쿼리에서 관련 객체들을 가져온다. 많은 관계가 조인하여 발생하는 큰 결과셋을 피하기 위해 외래키와 one-to-one 관계로 제한한다.

shell 에서 상품을 조회할 때 쓴 것인데 이것이 일반적인 조회 방법으로 각 줄마다 db 에 접근한다. product에서 product_type 이라는 foreign-key에 접근한 것이다.

이렇게 select_related 를 사용하면 첫 줄에서 product_type 필드에 접근하여 캐싱되기 때문에 둘째 줄에서는 db 에 접근하지 않는다.

위처럼 select_relatedfilter 는 순서가 바뀌어도 상관이 없다.

profile
개발자꿈나무🌲

0개의 댓글