N+1 Sorgusu (ARCH2050)
Anahtar python.orm.n-plus-one-query · Önem warning · Kategori orm
Döngünün her turunda ilişkili veri için yeni bir sorgu açmak, N kayıt için N+1 round-trip üretir. ORM performansını en çok düşüren hatadır.
Hatalı
Bölüm başlığı “Hatalı”authors = Author.objects.all()for author in authors: print(author.profile.bio) # her iterasyonda ayrı SELECTauthors = Author.objects.select_related("profile")for author in authors: print(author.profile.bio) # tek JOIN ile yüklendiDüzeltme
Bölüm başlığı “Düzeltme”İlişkili veriyi select_related / prefetch_related ile önceden yükleyin, döngü içinde sorgu açmayın.