exe-6ren">
gpt4 book ai didi

mysql - 如何逐行从大表中获取数据

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:35 26 4
gpt4 key购买 nike

我需要从 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
}

顺便说一句,分页速度很慢:/

最佳答案

apparently all results from query is store in memory after execute() command

这是 mysql 客户端库的默认行为。您可以使用 mysql_use_result attribute 禁用它在数据库或语句句柄上。

请注意,当所有行都流式传输到客户端代码时,您在表上拥有的读锁将保持更长的时间。如果这可能是一个问题,您可能需要使用 SQL_BUFFER_RESULT .

关于mysql - 如何逐行从大表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50875261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com