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.
Hatalı
Bölüm başlığı “Hatalı”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() ]Düzeltme
Bölüm başlığı “Düzeltme”İlişkili veriyi select_related veya prefetch_related ile tek sorguda eager yükleyin.