免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2053 | 回复: 3
打印 上一主题 下一主题

关于dbi效率问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-10 11:33 |只看该作者 |倒序浏览
从informix提取数据到本地文件中.
行数是2900行,保存为文件后的大小大概是300K,需要耗时8秒,百M带宽.
效率太底了,有什么另外的方法吗?
  1. #!/usr/bin/perl -w
  2. use DBI;
  3. use DBD::Informix;

  4. my $database='db';
  5. my $user='***';
  6. my $pass='***';
  7. my $time_before=time;
  8. my $dbh = DBI->connect("dbi:Informix:$database", $user, $pass,{AutoCommit => 0, PrintError => 1});
  9. my $sth=$dbh->prepare_cached(qq{select * from vender});
  10. $sth->execute;
  11. my $total_row=0;
  12. open TXT_DATA,">","testdata\.txt";
  13. my  $rows = $sth -> fetchall_arrayref();
  14. foreach my $row(@$rows){
  15.         print TXT_DATA "$row\n";
  16.         $total_row++;
  17. }
  18. close TXT_DATA;
  19. $dbh->disconnect;
  20. my $time_after=time;
  21. my $lost_time=$time_after-$time_before;
  22. print "lost time : $lost_time\n";
  23. print "total row: $total_row\n";
复制代码

论坛徽章:
0
2 [报告]
发表于 2008-04-10 11:44 |只看该作者
我想,fetchrow_arrayref 要比 fetchall_arrayref 效率好一些吧。
另外你查查别的地方是不是有什么端倪。没环境,没法测试。

[ 本帖最后由 放驴娃 于 2008-4-10 11:46 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-04-10 11:46 |只看该作者
原帖由 放驴娃 于 2008-4-10 11:44 发表
我想,fetch 要比 fetchall_arrayref 效率好一些吧。
另外你查查别的地方是不是有什么端倪。没环境,没法测试。
  1. while (my @ary = $sth -> fetchrow_array ()){
复制代码

用了fetch也差不多的慢.......

论坛徽章:
0
4 [报告]
发表于 2008-04-10 11:47 |只看该作者
fetch 是 fetchrow_arrayref 的别名,和 fetchrow_array 还是有区别的……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP