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

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

海绵宝宝撒

正常应该是 先把数据库对比的键值 一次性缓存下来,然后EXCEL的键值与之对比,构建insert或update,最后一次更新数据库

HUX布斯

一般的做法,先删除,在ADD,别去判断更新了~~   如果你真要判断,那么就先针对统一字段排序,这样能够减少比较次数~

UYOU

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

收到一只叮咚

傻孩子,不管3721导入后,在数据库sql完成去重复操作
打开App,查看更多内容
随时随地看视频慕课网APP