On Mon, Nov 06, 2006 at 04:08:40PM -0000, [EMAIL PROTECTED] wrote: > On 6 Nov 2006 at 15:08, Also Sprach Tim Bunce: > > > Exactly. Also keep in mind the combined approach using bind_columns: > > > > $sth->execute; > > my %row; > > $sth->bind_columns( \( @row{ @{$sth->{NAME_lc} } } )); > > while ($sth->fetch) { > > print "$row{region}: $row{sales}\n"; > > } > > Ah. Thanks. Just what I'm after! > But doesn't fetchrow_hashref do this, and more efficiently?
No. On each call to fetchrow_hashref it has to FETCH the NAME attribute to get the keys to use for the hash. That's what makes fetchrow_hashref significantly slower than non-hash fetching. See the bottom half of page 24 in http://backpan.perl.org/authors/id/T/TI/TIMB/DBI_AdvancedTalk_200608.pdf for a (slightly obtuse) comparison of selectall_arrayref vs selectall_hashref vs prepare+execute+fetch loop. Tim.