Erken Materyalizasyon (ARCH2056)
Anahtar python.orm.early-materialization · Önem warning · Kategori orm
Sorguyu listeye materyalize ettikten sonra bellekte filtreleme/sıralama yapmak, veritabanına itilmesi gereken işi uygulamaya taşır. Tüm satırları çekip sonra elemek israftır.
Hatalı
Bölüm başlığı “Hatalı”users = list(User.objects.all())active = [u for u in users if u.is_active] # bellekte filtreleniyoractive = User.objects.filter(is_active=True) # filtre DB'deDüzeltme
Bölüm başlığı “Düzeltme”Filtre, sıralama ve agregasyonu materyalizasyondan önce .filter() / .order_by() ile veritabanına itin.