【发布时间】:2018-11-25 06:43:59
【问题描述】:
我需要从 mysql 表中获取所有数据。到目前为止,我尝试的是:
my $query = $connection->prepare("select * from table");
$query->execute();
while (my @row=$query->fetchrow_array)
{
print format_row(@row);
}
但总有一个但是……
表有大约 600M 行,显然查询的所有结果都存储在 execute() 命令之后的内存中。内存不足:(
我的问题是:
有没有办法使用 perl DBI 从表中逐行获取数据?像这样:
my $query = $connection->prepare("select * from table");
while (my @row=$query->fetchrow_array)
{
#....do stuff
}
顺便说一句,分页速度很慢:/
【问题讨论】:
-
print format_row(@row) -
众所周知,对于 MySQL 来说,大偏移量的 LIMIT 确实很慢。mysql.rjweb.org/doc.php/pagination