对于大数据量的导入,同时又要对旧数据进行更新,对数据库的压力相当大,而且相当耗损时间,之前测试在一张一百万数据表中导入10万的数据,每条记录都进行查询判断,进行了半个小时还没处理完,等待的时间客户是无法接受的,何况在面对上千万的数据中,最后得出一个解决方法。
方法:建一个新表B,跟原表A的结构相同,把每次导入的新数据全部导入B表中,然后用左外连接 把重复数据删除:delete from A where A.id in(select id from B left join A on B.id = A.id),然后执行insert into A select * form B,最后再删除B表的数据,测试发现这个不到一分钟就可以在100万的数据中完成10W数据的导入。
方法:建一个新表B,跟原表A的结构相同,把每次导入的新数据全部导入B表中,然后用左外连接 把重复数据删除:delete from A where A.id in(select id from B left join A on B.id = A.id),然后执行insert into A select * form B,最后再删除B表的数据,测试发现这个不到一分钟就可以在100万的数据中完成10W数据的导入。