
백엔드
Django ORM defer 기능
두줄요약
Django ORM의 `defer()`로 특정 컬럼을 제외한 조회와 저장 동작을 설명했습니다. 제외 필드 접근 시 지연 로딩 쿼리가 발생하는 점을 주의해야 합니다.
구조와 흐름
defer()로 지정 컬럼을 제외한 모델 필드만 조회filter()체이닝과select_related()관계 필드의 개별 제외 지원- 기존 객체 조회 시 지연 로딩, 신규 생성 시 전체 필드 포함 동작
성능/운영 포인트
- 큰 모델에서 불필요한 컬럼 전송을 줄이는 경량 쿼리 구성
- defer된 인스턴스 저장 시 로드된 필드 중심의 UPDATE 수행
주의할 점
- 제외한 필드 접근 시 추가 SELECT 발생
select_related()로 조인한 관계 객체에서도 defer된 필드 접근 시 지연 로딩 발생get_or_create()의 생성 경로에서는 defer 제외 필드 없이 전체 필드 생성
적용해볼 점
- 목록 조회처럼 일부 필드만 필요한 경로의 대용량 텍스트·이미지 필드 제외
- 이후 접근 가능성이 높은 필드는 제외 대상에서 배제해 추가 쿼리 방지


