İçeriğe geç

ORM N+1 sorgusu (ARCH2079)

Anahtar python.performance.orm-n-plus-one · Önem error · Kategori performance

Bir sorgu sonucu üzerinde döngü kurup her öğenin ilişkisine erişmek, satır başına ek bir sorgu üretir (N+1). İlişkiyi select_related/prefetch_related ile önceden yükleyin.

def list_authors(books):
return [
book.author.name
for book in Book.objects.all()
]
def list_authors():
return [
book.author.name
for book in Book.objects.select_related("author").all()
]

İlişkili veriyi select_related veya prefetch_related ile tek sorguda eager yükleyin.