La tabella in questione contiene circa dieci milioni di righe.
for event in Event.objects.all():
print event
Ciò fa sì che l'utilizzo della memoria aumenti costantemente fino a 4 GB o giù di lì, a quel punto le righe vengono stampate rapidamente. Il lungo ritardo prima che la prima riga fosse stampata mi ha sorpreso: mi aspettavo che venisse stampata quasi istantaneamente.
Ho anche provato Event.objects.iterator()
che si è comportato allo stesso modo.
Non capisco cosa Django stia caricando in memoria o perché lo stia facendo. Mi aspettavo che Django iterasse i risultati a livello di database, il che significherebbe che i risultati sarebbero stati stampati a una velocità più o meno costante (piuttosto che tutti in una volta dopo una lunga attesa).
Cosa ho frainteso?
(Non so se sia rilevante, ma sto usando PostgreSQL.)