关于dbi效率问题

关于dbi效率问题

从informix提取数据到本地文件中.
行数是2900行,保存为文件后的大小大概是300K,需要耗时8秒,百M带宽.
效率太底了,有什么另外的方法吗?

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl -w
use DBI;
use DBD::Informix;

my $database='db';
my $user='***';
my $pass='***';
my $time_before=time;
my $dbh = DBI->connect("dbi:Informix:$database", $user, $pass,{AutoCommit => 0, PrintError => 1});
my $sth=$dbh->prepare_cached(qq{select * from vender});
$sth->execute;
my $total_row=0;
open TXT_DATA,">","testdata\.txt";
my  $rows = $sth -> fetchall_arrayref();
foreach my $row(@$rows){
        print TXT_DATA "$row\n";
        $total_row++;
}
close TXT_DATA;
$dbh->disconnect;
my $time_after=time;
my $lost_time=$time_after-$time_before;
print "lost time : $lost_time\n";
print "total row: $total_row\n";

我想,fetchrow_arrayref 要比 fetchall_arrayref 效率好一些吧。
另外你查查别的地方是不是有什么端倪。没环境,没法测试。



QUOTE:
原帖由 放驴娃 于 2008-4-10 11:44 发表
我想,fetch 要比 fetchall_arrayref 效率好一些吧。
另外你查查别的地方是不是有什么端倪。没环境,没法测试。



[Copy to clipboard] [ - ]
CODE:
while (my @ary = $sth -> fetchrow_array ()){

用了fetch也差不多的慢.......
fetch 是 fetchrow_arrayref 的别名,和 fetchrow_array 还是有区别的……