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_relatedeprefetch_related— riduce il numero di query lavorando con modelli correlati. - Utilizzo di
values()evalues_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.