CSDN网友问:
目前有一个需求,用户需要在短时间内将几万条数据导入 MSSQL 数据库。
如果有一条无法导入,需要知道是哪条数据出的错。
导入之前最好还要根据条件验证一下数据是否存在,存在就删除。
现在我一条一条判断导入,非常缓慢。
请问有什么好的思路么?
月小升答:
你慢在搜索上。每次检查会相当消耗资源
1.如果数据有关键字段,能表示重复 比如用户ID号userid。那么把这个字段userid做唯一索引(插入的时候进行try catch 遇到重复会自动被catch,你就知道哪条重复了)被插入的永远都是不重复的
2.如果没有关键字段,所有字段合并做MD5值,单独加个字段叫md 做成唯一索引,然后try catch,原理和1相同
数据库的插入效率很高,搜索效率却很低。主要你要扫描的记录会越来越多,所以搜索会慢。避免搜索就变线性时间了。
(几万条数据,玩的还算比较少,我用这个办法玩过1000万的数据)