У меня есть что-то, что выглядит следующим образом:Ускорение 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 миллионов записей. Я не могу изменить/обновить сервер.
Благодаря
Этот код должен работать достаточно быстро. Вы уверены, что выбор не займет много времени? Вы можете захотеть, сколько времени займет выполнение. И, конечно же, ваш процесс может быть медленным. Вы можете попробовать синхронизировать только выборку без процесса. –