Vinzenz Mai: LIMIT oder Begrenzung der ResulSets schneller?

Beitrag lesen

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