Hello,
"fetchall_arrayref" is just as slow for REF CURSORs because internally, OCI
still does a DB roundtrip for each row.
Running a test will illustrate the issue. Here is a result of a test run:
++++++++++++++++++++++++++++++++++++++++++++++++++
Fetched 2500 rows (select): [0.06174] secs.
Fetched 2500 rows (ref cursor): [5.40367] secs.
Fetched 2500 rows (ref cursor array-fetch): [0.631323] secs.
++++++++++++++++++++++++++++++++++++++++++++++++++
Biswa
Alexander V Alekseev
Fri, 14 Sep 2007 12:42:39 -0700
Hello!
On Fri, 14 Sep 2007, Biswadeep Chowdhury wrote:
I am listing the patch (diff file).
The REF CURSOR array-fetch can be turned on using something like
"$dbh->{RefCursorCacheSize}=16;".
Array fetch remains off by default (single row fetch) so that it will
not
affect users who dont care about it.
I have added tests to the end of "50cursor.t" that you may execute to
view
performance improvements.
I hope you will consider it for the next version.
Shouldn't it be implemented as fetchall_arrayref( $slice,
$max_rows ) ? DBD::Oracle lacks it.
Bye. Alex.