【问题标题】:C# datatable loop smaller chunksC# 数据表循环更小的块
【发布时间】:2012-12-16 17:36:20
【问题描述】:

目前我正在从数据库表 (75681) 中选择大量行,将它们放入数据表中,然后对每一行执行 foreach 查找

foreach (DataRow row in dt.Rows)
{
   //Updating record
}

我正在尝试将其拆分为 500 或 1000 的块以提高性能,但我不确定如何去做?

我可以告诉 foreach 循环一次处理 500 个,还是我必须以某种方式将数据表拆分为 500 个行块?

希望以上内容有意义!

安德鲁

【问题讨论】:

  • 我不确定你想要做什么是个好主意,但这个 SO 问题的答案可能会有所帮助:stackoverflow.com/questions/548475/…
  • 如果大规模更新在数据库服务器上通过 SQL 完成,则数据库工作得最好。

标签: c# datatable


【解决方案1】:

目前我正在从数据库表 (75681) 中选择很多行,并将它们放入 一个数据表,然后对每一行执行一次 foreach 查找

你为什么要在内存中实现所有记录?我希望不是这个循环。

还是我必须以某种方式将数据表拆分为 500 行块?

您只需将 DataReader 放入循环中,具体化为一个对象,然后在那里处理。我想到了 Parallels 框架。

【讨论】:

  • TBH,我使用 C# 的时间不长,我目前正在编写一个 MVC 项目来替换 RoR 应用程序,并且我正在将数据从 PostgreSQL 迁移到 MS SQL,我正在从我的 PostgreSQL 数据库中选择所有行,然后将它们插入到 MS SQL 中。我不应该将每一行添加到数据表中吗?
  • 没有。这是纯粹的转职?零感觉在内存中保留比您现在正在处理的行更多的内容。沿着一个表循环,将数据切割成更大的段并在另一侧发出阻塞的插入语句(即,如果可能,每行不要一个 - 这会很慢)。
猜你喜欢
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多