mam coś, co wygląda tak:Przyspieszenie Perl DBI fetchrow_hashref
my $report = new ReportGenerator; #custom object
my $dbh = $dbc->prepare('SELECT * FROM some_table WHERE some_condition'); #DBI handle
$dbh->execute();
while(my $href = $dbh->fetchrow_hashref){
$report->process_record($href);
}
$dbh->finish();
print $report->printReport();
Moim problemem jest to, że każda iteracja pętli jest bardzo powolna. Problemem jest MySQL. Zastanawiałem się, czy możliwe było umieszczenie jakiegoś opakowania w pętli while, aby pobrać więcej niż jeden rekord na raz, jednocześnie pobieranie wszystkich zapisów do pamięci również nie jest praktyczne. Nie martwię się o efektywność kodu (hashref vs arrayref, etc ..). Raczej jestem zainteresowany przy pobieraniu pozwala powiedzieć 10000 rekordów na raz.
Baza danych zawiera ~ 5 milionów rekordów. Nie mogę zmienić/zaktualizować serwera.
Dzięki
Ten kod powinien działać wystarczająco szybko. Czy jesteś pewien, że wybór nie trwa długo? Możesz chcieć czas, jak długo trwa wykonanie. Oczywiście proces może być powolny. Możesz spróbować taktowania tylko pobrania bez procesu. –