开发工具是VC,以前经常用OO4O访问Oracle,最近想试试OCI,结果发现比OO4O还慢,是哪里出问题了,请各位大侠指教!具体情况是这样的,有一个表有20个字段,300,0000行记录,用OO4O时,每秒能返回10000多条记录,用OCI时,只能返回2000个左右,怎么差这么远!按道理,OCI应该比OO4O效率高。1、OO4Oextern ODatabase odb;ODynaset odyn;
odyn.Open(odb,"select F1,F2,F3,... FROM T_MyTable",ODYNASET_READONLY|ODYNASET_NOCACHE);while(!odyn.isEOF())
{
 odyn.GetFieldValue(...);
 odyn.MoveNext(); 
}2、OCIextern OCISvcCtx* g_pSvc;
extern OCIStmt* g_pStmt;
extern OCIError* g_pErr;CString sSQL = "select F1,F2,F3,... FROM T_MyTable";//准备
OCIStmtPrepare(g_pStmt, g_pErr, (const text *)sSQL, strlen(sSQL),(ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);//执行
OCIStmtExecute(g_pSvc, g_pStmt, g_pErr, (ub4)0, (ub4)0, 
                   (OCISnapshot *)NULL, (OCISnapshot *)NULL,OCI_DEFAULT);//绑定各列
OCIDefineByPos(g_pStmt, &hDefn, g_pErr,
        col, 
        (ub1 *) pBuf, nBufLen,
        SQLT_STR, m_pColumnInd + col, 
        NULL, NULL, OCI_DEFAULT);
.......while(1)
{
  if(OCIStmtFetch2(g_pStmt,g_pErr,1,OCI_FETCH_NEXT,0,OCI_DEFAULT) != OCI_SUCCESS)
  {
    break;
  }
 
  //...得到数据
}