tengo algo que se parece a esto:Acelerar 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();
Mi problema es que cada iteración del bucle es muy lento. El problema es el MySQL. Me preguntaba si era posible colocar algún tipo de envoltorio en el ciclo while para hacer que captara más de un registro a la vez, al mismo tiempo, tampoco es práctico recuperar todos los registros en la memoria. No me preocupa la eficacia del código (hashref vs arrayref, etc.). Más bien, estoy interesado en ir a buscar, digamos 10000 registros a la vez.
La base de datos tiene ~ 5 Millones de registros. No puedo cambiar/actualizar el servidor.
Gracias
Ese código debería ejecutarse lo suficientemente rápido. ¿Estás seguro de que la selección no tarda mucho tiempo en ejecutarse? Es posible que desee cronometrar cuánto tiempo tarda la ejecución. Y, por supuesto, su proceso podría ser lento. Puede intentar cronometrar solo la búsqueda sin el proceso. –