我有一些看起來像這樣:加快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