목록 보기
Django ORM only 기능
백엔드

Django ORM only 기능

똑똑한개발자
똑똑한개발자
2021년 7월 27일

두줄요약

Django ORM의 `only()`로 필요한 컬럼만 조회하고 저장 쿼리를 줄이는 방식을 살펴봤습니다.\n미조회 필드 접근 시 lazy loading 추가 쿼리가 발생하므로 필드 선택에 주의해야 합니다.

구조와 흐름

  • only()로 기본 키와 지정 필드만 조회하는 Django ORM 쿼리
  • filter(), select_related(), 객체 조건 검색, get_or_create() 조합 사례
  • 관계 모델 필드는 관계명__필드명 형태로 선택 조회

장단점

  • 대형 모델에서 불필요한 컬럼 조회 감소
  • only()로 조회한 인스턴스 저장 시 로드된 name 필드만 UPDATE
  • get_or_create()의 조회 결과에는 only() 적용, 생성 결과에는 전체 항목 보유

주의할 점

  • 미리 조회하지 않은 필드 접근 시 지연 로딩 쿼리 발생
  • 지연 로딩된 ForeignKey 접근 시 해당 키 조회와 연결 모델 조회가 연속 발생 가능

적용해볼 점

  • 실제로 사용할 필드가 제한적인 목록·조회 쿼리에 only() 적용
  • 이후 접근할 필드와 관계 필드를 함께 지정해 추가 쿼리 방지

다음 읽기

#Django 주제를 이어서 읽기

Django ORM defer 기능

Django ORM의 `defer()`로 특정 컬럼을 제외한 조회와 저장 동작을 설명했습니다. 제외 필드 접근 시 지연 로딩 쿼리가 발생하는 점을 주의해야 합니다.

똑똑한개발자
똑똑한개발자
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...