Font
[thread]3431[/thread]

Problem mit DBI:mysql und großer Tabelle



<< >> 2 entries, 1 page
Isegrim
 2004-04-01 18:53
#31964 #31964
User since
2004-04-01
9 articles
BenutzerIn
[default_avatar]
Hi,

habe folgendes Problem:
habe eine MySQL Datanbank und eine sehr große Tabelle mit über 500.00 Datensätzen. Wenn ich diese nun mittels eines SELECT Statements auswählen will, um damit etwas anzustellen, geht das sehr auf die Performance. Sprich es verbrät Speicher ohne Ende.

Ich benutze folgenden Code für die Abfrage:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w

use strict;
use warnings;
use DBI;

my $dsn = "DBI:mysql:SOME_DATABASE:localhost";
my $user = "tom";
my $pwd = "*********";

my $dbh = DBI->connect($dsn, $user, $pwd) or die;
my $sql = qq{SELECT `SOME_FIELD` FROM `SOME_TABLE`};
my $sth = $dbh->prepare($sql);
$sth->execute;

while (my $result = $sth->fetchrow_array) {
print "$result\n";
}
$sth->finish;
$dbh->disconnect;
exit;

Das Problem ist, dass er beim Ausführen der Abfrage eben erst alles in den Speicher lädt, bevor die Ergebnisse der Reihe nach abgefragt werden. Das belegt dann ca 500MB Speicher, was nicht so ganz zufriedenstellend ist.

Frage: wie kann ich die Abfrage optimieren, so dass das nicht ganz so arg auf die Performance geht?

Tom
ptk
 2004-04-01 20:57
#31965 #31965
User since
2003-11-28
3645 articles
ModeratorIn
[default_avatar]
Kannst du nicht ein geeignetes WHERE in deinem SQL-Ausdruck verwenden? Ansonsten kannst du auch mit LIMIT arbeiten, um die Abfrage scheibchenweise zurueckzugeben.
<< >> 2 entries, 1 page



View all threads created 2004-04-01 18:53.