@nyjo,
ich würde behaupten noch schneller by default!
Für Oracle ist auch etwas in der Performance Trickkiste:
Folgende TZDataSet.Properties-Parameter kannst du für das schnellere holen der Daten benutzen:
row_prefetch_size indiziert wieviel Speicher(in Bytes) pro öffnen eines ResultSets, du bereit bist vom Server-System zu verwenden/Abzutreten.
internal_buffer_size indiziert Zeos, wieviel Speicher du in gleicher weise auf Client-Seite bereit bist abszutreten, jedoch dient dieser Parameter auch zum errechnen wieviele Row-Manipulationen(Insert/Edit etc) pro Round-Trip ausgeführt werden können, siehe Array-Bindings, die Zeos intern schon kann.
Beide Parameter stehen by default auf 128KB.
Solltest du sehr große Mengen an Daten holen wollen, erhöhe beide Parameter! Oder verkleinere sie, wenn Zeos und Oracle zu viel Speicher fressen (sollte nur möglich sein, wenn du 'ne unglaubliche Menge an Tables gleichzeitig geöffnet hast).
Ich mache dann folgendes: Kalkuliere den Speicher für eine Row. Dann hole ich nicht nur eine Row/Fetch, sondern soviele, wie in den alloziierten Speicher passen mit EINEM call! Danach renne ich die ROWS nur noch intern durch. Letzte Zeile erreicht -> hole wieder x rows/fetch. Echt super, was Oracle da bietet, da jeder Call mit call-convetions ein Performance drop darstellt.
Beachte row_prefetch_size sollte im >= internal_buffer_size sein, um die optimal Performance zu erziehlen.