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_relatediprefetch_related— zmniejsza liczbę zapytań podczas pracy z powiązanymi modelami. - Użycie
values()ivalues_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ść.