Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 33ba9950

Von Sven Schöling vor mehr als 14 Jahren hinzugefügt

selectall_hashref_query umgestellt auf die DBI funktion selectall_arrayref.

Mit einem bestimmten Parameter tut diese genau das gleiche wie die
selectall_hashref, was zur Folge hat, das ein Großteil des Overheads der
Datenbankkommunikation gespart oder nach XS ausgelagert wird. Grosse Requests
mit sehr viel Datenbankzugriff (Schwalfenberg Fall) sind gut 25% schneller
damit.

Der Slice Parameter sollte mindestens auf Debian Sarge und darauf basierenden
Distributionen funktionieren, davor habe ich nicht nachgeschaut.

Unterschiede anzeigen:

SL/DBUtils.pm
147 147

  
148 148
  my ($form, $dbh, $query) = splice(@_, 0, 3);
149 149

  
150
  my $sth = prepare_execute_query($form, $dbh, $query, @_);
151
  my $result = [];
152
  while (my $ref = $sth->fetchrow_hashref()) {
153
    push(@{ $result }, $ref);
154
  }
155
  $sth->finish();
150
  dump_query(LXDebug->QUERY(), '', $query, @_);
151

  
152
  # this works back 'til at least DBI 1.46 on perl 5.8.4 on Debian Sarge (2004)
153
  my $result = $dbh->selectall_arrayref($query, { Slice => {} }, @_)
154
    or $form->dberror($query . (@_ ? " (" . join(", ", @_) . ")" : ''));
156 155

  
157 156
  $main::lxdebug->leave_sub(2);
158 157

  

Auch abrufbar als: Unified diff