为了账号安全,请及时绑定邮箱和手机立即绑定

关于数据库以及系统运行速度的问题

关于数据库以及系统运行速度的问题

当年话下 2018-12-06 17:43:39
我将一个excel的表格导入成gridview后,想将其再次导入到数据库中。 可是我想数据库中如果有这个excel里的数据的话(不是全部)。那么我就对其进行更新而不是插入。这里就有一个问题。加入我导入的excel表中有几万条数据,而数据库中也有几万条数据,那么我Gridview(导入excel表后)里每行都得与数据库里的几万条数据对比看是否有相同,再决定是插入还是更新。那么几万乘以几万次,这样的话会不会使这个系统的处理速度很慢(或者说完成操作都得十几分钟),有什么方法能对其进行优化,或者技术能对其进行有选择的对比而不是每个都对比一次。 请对这方面有经验或者做过类似的程序员帮帮忙。。。
查看完整描述

7 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

正常应该是 先把数据库对比的键值 一次性缓存下来,然后EXCEL的键值与之对比,构建insert或update,最后一次更新数据库
查看完整回答
反对 回复 2018-12-09
?
HUX布斯

TA贡献1876条经验 获得超6个赞

一般的做法,先删除,在ADD,别去判断更新了~~   如果你真要判断,那么就先针对统一字段排序,这样能够减少比较次数~
查看完整回答
反对 回复 2018-12-09
?
UYOU

TA贡献1878条经验 获得超4个赞

你先把数据库里的对比的键值用一个hash存起来,这个过程是O(n)复杂度,再把你要add 或update的数据的进行对比,这边的复杂度是O(m),这样的一个操作过程的复杂度最低只能做到O(M+N),只要不做成O(M*N)的复杂度就可以了,时间慢的应该是装箱拆箱的过程,用多线程来做吧,因为整个执行的时间比较,为了怕出现问题断电,误断的问题导致重新对比操作,最好用消息队列来做。
查看完整回答
反对 回复 2018-12-09
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

傻孩子,不管3721导入后,在数据库sql完成去重复操作
查看完整回答
反对 回复 2018-12-09
  • 7 回答
  • 0 关注
  • 576 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信