Ускорение 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();

Моя проблема в том, что каждая итерация цикла очень медленная. Проблема в MySQL. Мне было интересно, можно ли поместить в цикл while какую-то оболочку, чтобы он получал более одной записи за раз, в то же время выборка всех записей в память также нецелесообразна. Меня не беспокоит эффективность кода (hashref vs arrayref и т. Д.). Скорее, я заинтересован в получении, скажем, 10000 записей за раз.

В базе данных ~ 5 миллионов записей. Не могу сменить / обновить сервер.

Спасибо

6
задан friedo 22 December 2011 в 15:26
поделиться