Sobes.tech
Junior — Middle
93

Wie führst du die Analyse und Optimierung von Datenbankabfragen in Django durch?

Antwort von AI

sobes.tech KI

Um Django'da sorguları analiz etmek ve optimize etmek için genellikle aşağıdaki yaklaşımları kullanıyorum:

  • django-debug-toolbar kullanımı — sayfada gerçekleştirilen tüm SQL sorgularını görsel olarak gösterir, sayısı ve çalışma süresi dahil.
  • queryset.explain() yöntemi — sorgunun veritabanı seviyesinde yürütme planını gösterir, hangi indekslerin kullanıldığını anlamaya yardımcı olur.
  • select_related ve prefetch_related ile sorgu optimizasyonu — ilişkili modellerle çalışırken sorgu sayısını azaltır.
  • values() ve values_list() kullanımı — sadece gerekli alanları seçmek için, veri hacmini azaltır.
  • Kod ve sorgu profil oluşturma — darboğazları tespit etmek için.

select_related kullanım örneği:

# Optimizasyon olmadan
books = Book.objects.all()
for book in books:
    print(book.author.name)  # Her kitap için ayrı bir yazar sorgusu

# Optimizasyon ile
books = Book.objects.select_related('author').all()
for book in books:
    print(book.author.name)  # Tek sorgu ile JOIN

Bu şekilde, sorgu sayısı azalır ve performans artar.