PostgreSQL (domyślnie) zwraca wszystkie wiersze za jednym razem. Ma to tę zaletę, że zwalnia zasoby po stronie serwera kosztem możliwie dużych zestawów wyników po stronie klienta.
Alternatywą jest użycie kursora, który może zwracać pojedynczy wiersz na raz. Niektóre sterowniki obsługują to bezpośrednio (być może PDO ?) lub możesz użyć DECLARE i FETCH
Inną rzeczą, o której należy pamiętać, jest COPY PostgreSQL polecenie, które może zrzucić tabelę lub zapytanie bezpośrednio do pliku (zakładając, że nie potrzebujesz dużo przetwarzania/formatowania). Sprawdź, czy Twoja biblioteka bazy danych oferuje bezpośredni dostęp.