比较 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)以更快的方式读取数据?
两个选项是
我试图通过 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)以更快的方式读取数据?
两个选项是