Sobes.tech
Junior — Middle
91

Jak analizujesz i optymalizujesz zapytania do bazy danych w Django?

Odpowiedź od AI

sobes.tech AI

Aby analizować i optymalizować zapytania w Django, zwykle korzystam z następujących podejść:

  • Użycie django-debug-toolbar — pozwala wizualnie zobaczyć wszystkie zapytania SQL wykonywane na stronie, ich liczbę i czas wykonania.
  • Metoda queryset.explain() — wyświetla plan wykonania zapytania na poziomie bazy danych, pomaga zrozumieć, które indeksy są używane.
  • Optymalizacja zapytań za pomocą select_related i prefetch_related — zmniejsza liczbę zapytań podczas pracy z powiązanymi modelami.
  • Użycie values() i values_list() — aby wybierać tylko potrzebne pola, zmniejszając ilość danych.
  • Profilowanie kodu i zapytań — w celu wykrycia wąskich gardeł.

Przykład użycia select_related:

# Bez optymalizacji
books = Book.objects.all()
for book in books:
    print(book.author.name)  # Dla każdego book osobne zapytanie do author

# Z optymalizacją
books = Book.objects.select_related('author').all()
for book in books:
    print(book.author.name)  # Jedno zapytanie z JOIN

W ten sposób zmniejsza się liczbę zapytań i poprawia wydajność.