我试图通过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除外)以更快的方式读取数据吗?
最佳答案
两种选择是