Hallo dedlfix,
Aufklärung bietet wie so oft das Handbuch. Hier zwei Beispiele:
Für MySQL ist es nicht ganz offensichtlich zu finden. Die Erklärung der Arbeitsweise mit Resultsets ist bei der Funktion mysql_unbuffered_query() "versteckt".
Aufschlußreich scheint mir dort der Satz
<zitat>
You also have to fetch all result rows from an unbuffered SQL query,
before you can send a new SQL query to MySQL.
</zitat>
zu sein.
Die neuere mysqli-Schnittstelle bietet ein wenig mehr Steuerungsmöglichkeiten an.
Aber auch dort lese ich Hinweise auf die Problematik heraus, die vor allem Rouven auf dem Beispiel meiner 10-Millionen-Datensatz-Query herausgearbeitet hat. Grundsätzlich bleibe ich meiner Aussage aus meinem ersten Posting:
Frage von der Datenbank keine unnötigen Daten ab.
Für Oracle (OCI-Extension) gibt es den Konfigurationsparameter oci8.default_prefetch
<zitat>
OCI_EXACT_FETCH (integer)
Statement fetch mode. Used when the application knows in advance
exactly how many rows it will be fetching. This mode turns
prefetching off for Oracle release 8 or later mode. Cursor is
cancelled after the desired rows are fetched and may result in
reduced server-side resource usage.
</zitat>
die zu dieser Konstanten gehörende Beschreibung weist meiner Meinung nach ebenfalls auf die Ressourcenproblematik hin, die bei ungepufferten Abfragen entstehen kann, siehe dazu auch meine hinweisenden Fragen:
wann werden die Daten zum Client transferiert?
Übrigens: Wo begrenzt Du hier das Resultset?
Freundliche Grüße
Vinzenz