İçeriğe geç

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.

authors = Author.objects.all()
for author in authors:
print(author.profile.bio) # her iterasyonda ayrı SELECT
authors = Author.objects.select_related("profile")
for author in authors:
print(author.profile.bio) # tek JOIN ile yüklendi

İlişkili veriyi select_related / prefetch_related ile önceden yükleyin, döngü içinde sorgu açmayın.