用控制台做数据库的update的时候碰到的大数据量情况
之前在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;
和同事讨论了一下效率好像差不多