我试图用OLEDB获得与Ado.Net类似的性能,但没有成功。 我能得到的最好是比Ado.Net慢50%,所以我认为我做错了什么。我只需要向前阅读记录集,无需更新。比较OLEDB和Ado.Net的性能
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)以更快的方式读取数据?
如果表是很大的,供应商不应该的问题。此外,MS宣布打算使ODBC成为多年前最快的选项 –