A tabela em questão contém cerca de dez milhões de linhas.
for event in Event.objects.all():
print event
Isso faz com que o uso da memória aumente continuamente para 4 GB ou mais, momento em que as linhas são impressas rapidamente. O longo atraso antes da impressão da primeira linha me surpreendeu - eu esperava que fosse imprimir quase instantaneamente.
Eu também tentei Event.objects.iterator()
qual se comportou da mesma maneira.
Não entendo o que o Django está carregando na memória ou por que está fazendo isso. Eu esperava que o Django iterasse os resultados no nível do banco de dados, o que significaria que os resultados seriam impressos em uma taxa aproximadamente constante (ao invés de todos de uma vez após uma longa espera).
O que eu entendi mal?
(Não sei se é relevante, mas estou usando PostgreSQL.)