1

我正在研究应用程序优化,我已经优化了我的查询,从 17+ 秒开始只需要 5 毫秒(总执行时间 = ~350 毫秒)。但是迭代60k记录的 SQLDataReader 记录大约需要900 ms。有什么办法可以减少 900 毫秒的时间吗?

这是我使用的示例代码...

SqlConnection conn = new SqlConnection("data source=XXX;initial catalog=XXX;integrated security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("uspOptimizedSP", conn);
cmd.CommandType = CommandType.StoredProcedure;
var reader = cmd.ExecuteReader();

int i = 0;
Stopwatch sw = new Stopwatch();
sw.Start();
while (reader.Read())
{
++i;

}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); // This results in ~900 ms

经过的毫秒是从800 毫秒到 950毫秒

其他详情

  • 数据集大小 = 60k 记录的 714 MB。
  • 我使用了 AutoMapper,但将数据从 IDataReader 转换为 POCO 类需要 3 秒以上
4

1 回答 1

1

Datareader读取数据就像它是一个流一样,当执行查询可用时从数据库中检索这些行。这可能就是您复制 714 MB 数据需要时间的原因。您无法将其与迭代内存集合进行比较。

于 2013-11-13T22:19:54.640 回答