2012-07-08 8 views
5

データベースへの接続:は、私は次のコードを使用してMySQLデータベースに接続していたPerl

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と相互作用している時間までの罰金です。しかし、DBサイズが100GBのライブ環境にこのアプリケーションを移動すると、このコードがどのようなパフォーマンス上の問題を引き起こす可能性があります。私が求めているのは、実際には -

@row= $sqlQuery->fetchrow_array(); 

です。Perlはテーブルの内容全体をコピーして変数にダンプします。はいの場合、アプリケーションとデータベースサーバーのパフォーマンスに重大な問題はありませんか?

答えて

3

ラインでは:あなたが変数にクエリの結果セット全体をダンプしないであろう膨大なデータベースと対話する場合

@row= $sqlQuery->fetchrow_array(); 

1行ATA時間は、perlのデータベースによって返されます。一方

$arrRef = $sqlQuery->fetchall_arrayref(); 

..私の懸念に答え

+0

感謝 – Amey

関連する問題