我有一些看起来像这样:加快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条记录。
该数据库有约500万条记录。我无法更改/升级服务器。
感谢
该代码应该足够快地运行。你确定选择不需要很长时间运行?您可能需要时间执行需要多长时间。当然,你的过程可能会很慢。您可能会尝试在没有进程的情况下计时。 – 2011-12-22 16:32:26