M2M을 위한 prefetch_related
다대다 데이터를 효율적으로 일괄 로드합니다
M2M을 위한 prefetch_related은(는) CoddyKit의 무료 Django Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Django Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Django Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
prefetch_related 살펴보기
prefetch_related는 다대다 관계와 역방향 연결처럼 조인할 수 없는 관계를 지능적으로 묶어서 처리합니다. 📦
여러 번이 아닌 두 번의 쿼리
하나의 거대한 조인 대신 관련 행을 위한 두 번째 쿼리를 실행한 다음 Python에서 서로 연결합니다.
기본 호출
이전과 마찬가지로 관계 이름을 prefetch_related에 전달하면 Django가 조회를 자동으로 묶어 처리합니다.
authors = Author.objects.prefetch_related('books')N+1보다 두 번이 나은 이유
저자를 위한 쿼리 하나와 모든 저자의 도서를 위한 쿼리 하나로 총 두 번만 이동합니다. 순회하는 저자 수와 관계없이 동일합니다.
for author in authors:
print(author.books.count())여러 행에 적합
각 객체가 여러 행과 연결되는 경우 사용하세요. 다대다 필드와 역방향 외래 키에 특히 적합합니다.
역방향 관계도 작동함
저자가 자신의 모든 도서에 접근하는 경우처럼 역방향 접근자에서 특히 효과적입니다. select_related로는 처리할 수 없는 경우입니다.
두 도구 함께 사용하기
하나의 쿼리셋에 두 최적화 도구를 연결하여 각 도구가 가장 잘 처리하는 관계 유형에 사용할 수 있습니다.
Book.objects.select_related('author').prefetch_related('tags')Prefetch로 제어하기
Prefetch 객체를 사용하면 가져올 관련 행을 필터링하거나 정렬하여 세밀하게 제어할 수 있습니다.
from django.db.models import Prefetch
Author.objects.prefetch_related(
Prefetch('books', queryset=Book.objects.filter(year=2024)))Python에서 처리하기
일치하는 작업은 SQL이 아니라 Python에서 수행됩니다. 따라서 규모가 큰 다대다 조인에서 발생하는 행 폭증을 피할 수 있습니다.
반복문 안에서 신중하게 필터링하기
루프 안에서 미리 가져온 집합에 filter를 호출하면 다시 새로운 쿼리가 실행됩니다. 일괄 처리의 이점을 유지하려면 Prefetch를 사용하세요.
두 도구, 하나의 목표
단일 연결에는 select_related를, 여러 연결에는 prefetch_related를 사용하세요. 둘을 함께 사용하면 거의 모든 뷰에서 N+1 문제를 해결할 수 있습니다. 🚀
빠른 확인
이 경우에 적합한 최적화 도구를 선택하세요.
복습
prefetch_related는 다대다 연결과 역방향 연결을 두 번째 쿼리로 일괄 조회한 뒤 Python에서 연결합니다. 완전한 처리를 위해 select_related와 함께 사용하세요. ✅
AI 튜터와 함께 Python을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 30
- 레슨
- 120
자주 묻는 질문
“M2M을 위한 prefetch_related” 강의는 무료인가요?
네 — “M2M을 위한 prefetch_related” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Django Academy 강의 전체를 잠금 해제할 수 있습니다. Django Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“M2M을 위한 prefetch_related”에서 뭘 배우나요?
다대다 데이터를 효율적으로 일괄 로드합니다 브라우저에서 직접 실행하는 실습 코드로 Django Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Django Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Django Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“M2M을 위한 prefetch_related” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Django Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Django Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- N+1 문제 찾기
- ForeignKey를 위한 select_related
- M2M을 위한 prefetch_related
- Debug Toolbar로 프로파일링