比较 OLEDB 和 Ado.Net 的性能

Comparing performance of OLEDB and Ado.Net

我试图通过 OLEDB 获得与 Ado.Net 类似的性能,但没有成功。 我能得到的最好结果是比 Ado.Net 慢 50%,所以我认为我做错了什么。我需要只向前读取记录集,不需要更新。

    ADODB::_ConnectionPtr con;
    con.CreateInstance(__uuidof(ADODB::Connection) );
    con->ConnectionString = "...";
    con->Open("", "", "", ADODB::adConnectUnspecified);

    ADODB::_RecordsetPtr rs;
    rs.CreateInstance(__uuidof(ADODB::Recordset) );

    rs->Open(bstr_t("select * FROM BigTable"), _variant_t((IDispatch *)con), ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adAsyncFetch);

    rs->MoveFirst();
    int count=0;

    while (! rs->EndOfFile)
    {
        ++count;
        rs->MoveNext();

    }

    rs->Close();

我正在使用 Native Client OLEDB 提供程序。 是否有其他选项(不包括 .net)以更快的方式读取数据?

两个选项是

  1. 使用 ODBC:ODBC database sample
  2. 从 C++ 使用 OLE-DB:OLE DB for the ODBC Programmer, Creating a SQL Server Native Client OLE DB Provider Application