Sobes.tech
Junior — Middle
94

Come effettui l'analisi e l'ottimizzazione delle query al database in Django?

Risposta dell'AI

sobes.tech AI

Per analizzare e ottimizzare le query in Django, di solito utilizzo i seguenti approcci:

  • Utilizzo di django-debug-toolbar — permette di visualizzare tutte le query SQL eseguite sulla pagina, il loro numero e il tempo di esecuzione.
  • Metodo queryset.explain() — mostra il piano di esecuzione della query a livello di database, aiuta a capire quali indici vengono utilizzati.
  • Ottimizzazione delle query con select_related e prefetch_related — riduce il numero di query lavorando con modelli correlati.
  • Utilizzo di values() e values_list() — per selezionare solo i campi necessari, riducendo il volume dei dati.
  • Profilazione del codice e delle query — per identificare i colli di bottiglia.

Esempio di utilizzo di select_related:

# Senza ottimizzazione
books = Book.objects.all()
for book in books:
    print(book.author.name)  # Per ogni libro, una query separata a author

# Con ottimizzazione
books = Book.objects.select_related('author').all()
for book in books:
    print(book.author.name)  # Una query con JOIN

In questo modo, si riduce il numero di query e si migliora le prestazioni.