当前位置: 首页 > 面试题库 >

加快Perl DBI fetchrow_hashref的速度

连厉刚
2023-03-14
问题内容

我有这样的东西:

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与arrayref等)。相反,我有兴趣一次获取10000条记录。

该数据库有约500万条记录。我无法更改/升级服务器。

谢谢


问题答案:

您可以使用fetchall_arrayref函数,该函数接受“ maxrows”参数:

while (my $data = $dbc->fetchall_arrayref(undef, 10000)) {
  for my $row( @{$data} ) {
    $report->process_record($row);
  }
}

您还可以查看RowCacheSize属性,该属性试图控制从驱动程序中提取多少记录。



 类似资料:
  • 本文向大家介绍加快Android手机速度的方法,包括了加快Android手机速度的方法的使用技巧和注意事项,需要的朋友参考一下 没有人喜欢运行缓慢的智能手机,但是随着时间的流逝,您可能已经注意到曾经快速运行的Android设备的运行速度大大降低了。有许多技巧和窍门可以加快您的Android设备的运行速度,并使它像新设备一样运行。他们之中有一些是: 清除缓存的数据 Android应用程序会不断缓存少

  • 问题内容: 从CSV加载数据似乎比从Pandas的SQL(Postgre SQL)加载数据要快。(我有一个固态硬盘) 这是我的测试代码: foo.csv和数据库是相同的(两个列中的数据和列数相同,4列,100000行充满随机int)。 CSV需要0.05秒 SQL花费0.5秒 您认为CSV比SQL快10倍是正常的吗?我想知道我是否在这里错过了什么… 问题答案: 这是正常现象,读取csv文件始终是简

  • 图片是放在金蝶服务器上,前端页面el-image的src放图片的访问路径,加载的速度得4 5秒吧,请问大神这种情况怎么优化,使图片的加载速度变快?

  • 当我通过VS代码运行我的网页时,我的所有图片都会显示出来,但由于某种原因,当我通过localhost运行网页时,没有任何图片或CSS被发送。这是我下面的代码,任何帮助都将不胜感激。我曾试图在网上找到解决方案,但迄今为止似乎没有任何效果。 这是我的文件结构

  • 问题内容: 我们开始在我们的项目中大量使用GWT,并且GWT编译器的性能变得越来越令人讨厌。 我们将开始改变工作方式以减轻该问题,包括更加强调托管模式浏览器,这推迟了以后运行GWT编译器的需求,但这带来了自身的风险,特别是在直到比我们想要的晚得多的时候,才能够真正使用浏览器解决问题。 理想情况下,我们希望使GWT编译器本身更快-一分钟的编译相当小的应用程序花费了很多精力。但是,如果使用的是相当幼稚

  • 问题内容: 考虑以下python程序: 在我的6GB文本文件上运行它,大约2分钟即可完成。 问题: 是否可以更快? 请注意,以下情况需要相同的时间: 因此,我怀疑我的疑问只是一个简单的“否”。 还要注意,我的真实程序正在做的事情不仅仅是计数行数,因此请给出一个通用的答案, 而不是 行数计数技巧(例如在文件中保留行数元数据) PS:我将此问题标记为“ linux”,因为我仅对特定于linux的答案感