求教高手们,我用OCI读取表才6000个行,表就两个字段,用的函数OCIStmtFetch,一直循环到底,什么也不做,结果80秒阿
而别人BDE用控件的next才6秒我无语,不是说OCI快马晕了 解答的高手小弟先拜谢你们了!

解决方案 »

  1.   

    就是oci遍历函数OCIStmtFetch 比BDE的遍历函数next()慢很多,的各位大大帮帮我啊char *sql ="select age from student";//表就一个字段age int型有60000行
    //初始化
    while(1)
    {
    t = OCIStmtFetch(m_stmt,pcon->error_h,1,OCI_FETCH_NEXT,OCI_DEFAULT); if(t == OCI_NO_DATA)break;
    if(t != OCI_SUCCESS) 
    {
    char ee[50];
    geterr(ee,pcon->error_h,t);
    break;
    }
    };
    //end while: 执行时间是60秒用delphi:建立BDE连接和一个var qry: Tadoquery指向这个连接
    //初始化qry
    while not qry.eof do
    begin
      next; 
    end; 
    //end while:只需要1秒
      

  2.   

    大哥,你没有设置bulk操作。你要设置 bulk操作,缓冲区大小为6000,一次就取光了所有的记录。----------------------------------------------------------- 
    《征服C/C++企业软件开发核心技术》 
    主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
    http://www.china-pub.com/209150