2 sunwork888 sunwork888 于 2015.07.28 02:09 提问

关于c#winform无数据库处理6万数据量的困惑

有一个需求,6万条的txt文本中有八列,第一列为id其余为介绍列,id列需要检测是否重复,系统提供用户导出重复内容,提供删除重复项功能。要求减少其他第三方软件的安装,包括数据库。经过几次尝试,数据操作时间很长经常卡死。增加access数据库依然如此。请高手指点。

5个回答

caozhy
caozhy   Ds   Rxr 2015.07.28 02:26

你可以在循环中插入Application.DoEvents();
这样就不会卡死了。
也可以放在工作线程中。

oyljerry
oyljerry   Ds   Rxr 2015.07.28 07:45

6万记录不是很多,现在机器内存可以处理,你说处理时间很长,那么可以加一些时间检测,看是不是你的代码处理有问题,比如死循环等。

bailiningshuang
bailiningshuang   2015.07.28 08:42

使用StreamReader,另辟线程逐行读取并验证插入(也可先插入到一个临时表中 ,ADO.NET),设计进度条查看运行进度。
6万行对现在的计算机来说应该不算什么大数据了,很快的。

collonn
collonn   2015.07.28 09:27

如果id是字符串,用HashSet,如果ID是数字,可以用bit位数组,6W数据,太少了,600万都没问题,只遍历一下就行了。

save4me
save4me   Ds   Rxr 2015.07.28 10:53

1) 使用TextReader比使用StreamReader快
2) 如果并发情况不严重,使用SQLite,只需要dll,不需要其他的安装,支持绝大部分SQL语法。可以快速的查找除重复项。任务结束后,直接删除数据库文件即可。

sunwork888
sunwork888 感谢,一直在寻找一个数据库替代 access
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片