用控制台做数据库的update的时候碰到的大数据量情况

monkeyHere monkeyHere 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
之前在sql版问过一个删除重复数据的问题, 后来因为需求关系, 条件复杂不少, 于是写成程序解决
现在遇到的困难是速度太慢了-0-

关键代码如下
DataRow[] dr;
//Table_Cell为需要判断重复数据的列名;sortOrder为排序方式; dt为已经根据要求对数据库数据分组并返回的 datatable
for (int i = 0; i < Table_Cell.Length; i++)
{
dr = dt.Select("Table_Cell='" + Table_Cell[i] + "'", sortOrder);
//第一个数据不删除, 从第二个开始, 如果有重复的数据,设置flag为1
if (dr.Length > 1)
{
for (int j = 0; j < dr.Length - 1; j++)
{
int k = j + 1;
if (dr[k]["Cell_Value"].Equals(dr[j]["Cell_Value"]))
{
//调用updateRowDataFlag方法更新数据库,scon为 sqlconnection值

if (d.updateRowDataFlag(scon,dr[k]["ID"].ToString()))
{
success += 1;
}
total += 1;
Console.WriteLine("处理中, 第" + total + "条数据");
}

}
}
}

数据总量大概有40W条, 现在这样处理, 一秒钟大概是6~8个数据更新,全部完成在13个小时左右

想着有没有办法可以提高效率?

我开始设想, 把 dr[k]["ID"] 这个ID值 全部存放到一个List里面,当取出所有需要更改flag的ID值之后, 再循环进行update;
和同事讨论了一下效率好像差不多
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
monkeyHere
.NET社区 62,271 成员 668,968 内容