gpt4 book ai didi

c# - DataTable.Load 比 IDataAdapter.Fill 慢?

转载 作者:行者123 更新时间:2023-11-30 17:10:16 25 4
gpt4 key购买 nike

<分区>

我正在使用以下代码(Variant DataReader):

public DataTable dtFromDataReader(list<String> lstStrings)
{

OleDBConn_.Open();
using (OleDbCommand cmd = new OleDbCommand())
{

DataTable dt = new DataTable();
OleDbDataReader reader = null;
cmd.Connection = OleDBConn_;
cmd.CommandText = "SELECT * from TableX where SUID=?";

foreach (String aString in lstStrings)
{
cmd.Parameters.AddWithValue("?", aNode.SUID);
reader = cmd.ExecuteReader();

if (reader != null)
dt.Load(reader);
cmd.Parameters.Clear();
}
return dt;
}
}

并将其与(变体数据适配器)进行比较:

public DataTable dtFromDataAdapter(list<String> lstStrings)
{
dt = new DataTable();

foreach (string aString in lstStrings)
{
sOledb_statement = String.Concat("SELECT * FROM TableX where SUID='", aString, "'");
OleDbDataAdapter oleDbAdapter;
using (oleDbAdapter = new OleDbDataAdapter(sOledb_statement, OleDBConn_))
{
GetOleDbRows = oleDbAdapter.Fill(dt);
}
}
}

当我连接到离线数据库 (microsoft access) 时,我的阅读时间是(~1.5k 检索到的项目):

  • DataReader 420 毫秒
  • 数据适配器 5613 毫秒

从 oracle 服务器读取时(~30k 检索项目):

  • DataReader 323845 毫秒
  • 数据适配器 204153 毫秒(几次测试,时间变化不大)

即使更改命令的顺序(dataadapter 在 datareader 之前)也没有太大变化(我认为可能有一些预缓存......)。

我认为 DataTable.Load 应该比 DataAdapter.Fill 快一些?

而且我仍然相信,即使我看到了结果,它应该更快。我在哪里浪费时间? (没有未处理的异常..)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com