Zależy to od używanej bazy danych i konfiguracji bazy danych.
W przypadku MySQL musisz upewnić się, że używasz zapytań buforowanych. W PDO ustawiasz to tak:
$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
Oznacza to, że wszystkie dane zostaną wysłane do klienta (nie jest to to samo, co pobranie ich wszystkich w PHP).
Inną (prawdopodobnie gorszą) alternatywą jest otwarcie nowego połączenia z bazą danych za każdym razem, gdy wykryjesz uruchamiane zapytanie z wciąż otwartym zestawem wyników.
Normalny mysql_query()
używa buforowanego zapytania, więc będzie działać z wieloma zestawami wyników.