Schrift
[thread]3377[/thread]

Datenbank-Anfrage optimieren



<< >> 5 Einträge, 1 Seite
stb2050
 2003-11-22 13:24
#35731 #35731
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

DB-Anfragen mache ich momentan immer so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
$anfrage = "SELECT userid, status FROM tabelle1 WHERE username='$username';";
&datenbank;
$ergebnisse = $sth->fetchall_arrayref( { userid => 1, status => 1 } );

foreach(@$ergebnisse)
{
   $userid = $_->{userid};
   $status = $_->{status};
}


&datenbank sieht so aus:

Code (perl): (dl )
1
2
3
4
5
6
7
8
sub datenbank
{
   if ($anfrage eq "") { $message = "Keine MySQL-Anfrage"; &error_end; }
   use DBI;
   my $dbh = DBI->connect("DBI:$dbdriver:$dbdatabase:$dbhost:$dbport", $dbuser, $dbpassword, { PrintError => 0, RaiseError => 0 } );
   $sth = $dbh->prepare($anfrage) || die "Kann Statement nicht vorbereiten: $DBI::errstr\n";
   $sth->execute() || die "Kann Statement nicht vorbereiten: $DBI::errstr\n";
}


Nun habe ich das Gefühl, das Ganze ist nicht optimal und bei vielen Aufrufen geht es ganz schön auf die Performance des Servers.

Habt ihr einen Vorschlag, wie ich das Ganze optimieren kann? Besonders wenn ich weiß, dass nur 1 Datensatz bei herauskommt, wird trotzdem ein @foreach gemacht. Bekomme ich das in diesem Fall auch ohne hin?

Viele Grüße & vielen Dank
Steffen
Ronnie
 2003-11-22 17:42
#35732 #35732
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Verwendest du Indizes für die Abfragen?
Doku MySQL - Abfragenoptimierung\n\n

<!--EDIT|Ronnie|1069515843-->
jan10001
 2003-11-22 21:02
#35733 #35733
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Sofern du weißt das deine Abfrage nur ein Ergebnis liefert könntest du selectrow_array verwenden.

Code: (dl )
my ( $userid, $status )  = $dbh->selectrow_array( "SELECT userid, status FROM tabelle1 WHERE username=$username");
stb2050
 2003-11-23 00:27
#35734 #35734
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

danke für Eure Tipps & Hinweise. Werde es mal testen und den Bericht über die Indexies durchlesen.

Viele Grüße
Steffen
Strat
 2003-11-23 23:54
#35735 #35735
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ein index auf das feld username koennte das ganze um einiges beschleunigen. indices bringen haeufig was, wenn man nach einem Feld sucht (oder joins darueber ausfuehrt)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 5 Einträge, 1 Seite



View all threads created 2003-11-22 13:24.