用控制台做数据库的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;
和同事讨论了一下效率好像差不多
现在遇到的困难是速度太慢了-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;
和同事讨论了一下效率好像差不多
...全文
相关推荐
SQLITE数据库 UPDATE慢
**大数据量**:随着表中数据的增长,UPDATE操作会变得越来越耗时。尤其是在没有合适索引的情况下,每增加一条记录,搜索和更新的速度都会下降。分批更新或者定期进行数据清理和归档可以缓解这个问题。
美团DB数据同步到数据仓库的架构与实践
《美团DB数据同步到数据仓库的架构与实践》在数据仓库建设中,原始的业务数据,特别是来自MySQL等关系型数据库的数据,是构建数据仓库不可或缺的部分。
VB.NET操作Access数据库(Update,Insert,delete,select)
本项目展示了如何使用VB.NET对Access数据库进行增删改查操作,包括Insert、Update、Delete和Select等功能,适用于桌面应用程序开发中轻量级数据库的交互需求,采用OLE DB
详解Java使用sqlite 数据库如何生成db文件
生成 DB 文件生成 DB 文件需要使用 SQLite 的 JDBC 驱动程序连接数据库,创建数据库连接、创建表、插入数据等步骤。
Delphi&C++Builder2009Update4(Database Pack)
**ADO(ActiveX Data Objects)支持**:Database Pack提供了对ADO的支持,允许开发者使用Microsoft的OLE DB技术来访问各种数据库,包括SQL Server


