Sling less for speed
 
 
- while(@row = $sth->fetchrow_array) { }
- 
- one column:   51,155 fetches per second
- 20 columns:   24,032 fetches per second 
 
- while($row = $sth->fetchrow_arrayref) { }
- 
- one column:   58,653 fetches per second  - approximately 12% faster
- 20 columns:   49,390 fetches per second  - approximately 51% faster
 
- while($row = shift(@$rowcache)  || shift(@{$rowcache=$sth->fetchall_arrayref(undef, $max_rows)})) { }
- 
- one column:   348,140 fetches per second - by far the fastest!
- 20 columns:     42,128 fetches per second - now slower than fetchrow_arrayref!
- Why? Balance time saved making fewer calls with time spent managing more memory
- Do your own benchmarks to find what works best for your situations
 
- Notes:
- 
- Tests used DBD::mysql on 100,000 rows with fields 9 chars each. $max_rows=1000;
- Time spent inside fetchrow_* method is approximately 0.000011s (~90,000 per second)