我正在使用以下代码连接到mysql数据库:

my $dbh = DBI->connect("DBI:mysql:test:localhost", $user, $pass)
    or die $DBI::errstr;
my $sqlQuery  = $dbh->prepare($query)
    or die "Can't prepare $query: $dbh->errstr\n";
my $rv = $sqlQuery->execute
    or die "can't execute the query: $sqlQuery->errstr";

while (my @row= $sqlQuery->fetchrow_array()) {
    # do something;
}

我的疑问是:在我的应用程序与小型DB进行交互之前,一切都很好。但是,当我将此应用程序移到数据库大小可能在100 GB的实时环境中时,此代码可能会导致哪些性能问题。实际上,我要问的是,在线上-
@row= $sqlQuery->fetchrow_array();

Perl将复制整个表的内容并将其转储到变量中。如果是,这是否会对我的应用程序和数据库服务器造成严重的性能问题?

最佳答案

在该行中:

@row= $sqlQuery->fetchrow_array();

数据库将返回一行数据到perl,如果与海量数据库进行交互,则不会将查询的整个结果集都转储到变量中。
$arrRef = $sqlQuery->fetchall_arrayref();

另一方面..

10-02 23:50