我試圖用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成爲多年前最快的選項 –