Takip Edin

element image element image element image element image
Django ORM Optimizasyonu image

N+1 Query Problemi

Bir developer kardeşimiz Django ile yaptığı sitesine girdiğinde fark etti: “Bu sayfa neden bu kadar yavaş yükleniyor 😭”. django-silk ile sorgular incelendiğinde 100 yazar için 101 SQL sorgusu çalıştığı görüldü.

🤯 N+1 Query Problemi: Django her yazarı aldıktan sonra, kitaplarını teker teker sorguluyordu.

3. only: Sen Hafızanı Boşa Yorma Kardeş

Teknik Açıklama: Modelin sadece belirli alanlarını getirir.

Kullanım: .only("title", "slug")

Hikaye:

Müzeye girip sadece tablo başlıklarına bakmak istersin. only der ki: “Sana sadece başlıkları getiriyorum.”

4. values ve values_list: Çıplak Veri Al, JSON Gibi

Teknik Açıklama: QuerySet yerine dict veya liste döner. JSON çıktısı gerekiyorsa çok uygundur.

Kullanım:

.values("id", "name") → [{id: 1, name: "Ali"}, {...}]
.values_list("id", flat=True) → [1, 2, 3]

Hikaye:

Sadece yazar adlarını almak istiyorsan model objesine gerek yoktur. values ve values_list sade ve hızlıdır.

5. defer: Lazım Olunca Getir Şimdilik Kalsın Kardeş

Teknik Açıklama: Bazı alanları ilk sorguda getirmez, ihtiyaç olursa çeker.

Kullanım: .defer("content")

Hikaye:

Haber sitesinde anasayfada sadece başlıkları getir, içerikleri tıklanırsa yükle. RAM ve performans dostu.

Kombinasyon Örnekleri

Article.objects.select_related("author").only("title", "author__name")
Book.objects.prefetch_related("authors").values("title", "authors__name")

Tek sorguda ilişkili veriler ve sadece gerekli alanlar çekilir.

Sonuç

Django ORM çok güçlüdür ama doğru kullanım gerekir. Fazla sorgu = yavaşlık. Az sorgu + doğru veri = hız ve mutlu kullanıcı 🎉

SubLogoBlog Yazılarımız

Blog

"Yeni Makalelerle İlham Alın"

Django Mülakat Soruları

Django Mülakat Soruları

Django mülakat soruları için 5 gerçek case: ORM performansı, transaction & race condition, Celery idempotensi, caching ve prod güvenliği.

Daha Fazla
Python Requests Session Kullanımı

Python Requests Session Kullanımı

Python requests kütüphanesinde Session nesnesinin get yerine nasıl ve neden kullanılacağını öğrenin. Daha hızlı, güvenli ve verimli HTTP istekleri için Ses

Daha Fazla
Django HTML Düzenleme Scripti

Django HTML Düzenleme Scripti

Django projelerinde HTML dosyalarındaki asset yollarını otomatik olarak {% static %} etiketine çeviren Python scripti. Zaman kazandıran pratik çözüm.

Daha Fazla

Teknoloji Çözümleriyle Dijital Gücünüzü Artırın

Web geliştirme, oyun geliştirme, SEO ve veritabanı çözümleri için uzman ekibimizle şimdi tanışın.