Sobes.tech
Junior — Middle

Ako vykonávaš analýzu a optimalizáciu dopytov do databázy v Django?

sobes.tech AI

Odpoveď od AI

Pre analize a optimalizácie dopytov v Django zvyčajne používam nasledujúce prístupy:

  • Použitie django-debug-toolbar — umožňuje vizuálne zobraziť všetky SQL dopyty vykonané na stránke, ich počet a dobu vykonania.
  • Metóda queryset.explain() — zobrazuje plán vykonania dopytu na úrovni databázy, pomáha pochopiť, ktoré indexy sa používajú.
  • Optimalizácia dopytov pomocou select_related a prefetch_related — znižuje počet dopytov pri práci s naviazanými modelmi.
  • Použitie values() a values_list() — na výber iba potrebných polí, znižuje objem dát.
  • Profilovanie kódu a dopytov — na identifikáciu úzkych miest.

Príklad použitia select_related:

# Bez optimalizácie
books = Book.objects.all()
for book in books:
    print(book.author.name)  # Pre každú knihu samostatný dopyt na autora

# S optimalizáciou
books = Book.objects.select_related('author').all()
for book in books:
    print(book.author.name)  # Jeden dopyt s JOIN

Týmto spôsobom sa znižuje počet dopytov a zlepšuje výkon.