mysql层面去重:mysql中如何不重复插入满足某些条件的重复的记录的问题 - BruceFighting - 博客园
数据库层面具体使用哪个sql语句去重,根据业务情况来定。
1.Excel批量导入10w数据量,多用户同时导入,2个字段相同去重(不包括主键)
数据库连接池默认开启连接50,最大100
由于mybatis有一次sql的大小限制或者数据库也有大小限制,因此可以将其分为多个list集合,使用ExcutorService、callable、futuretask、countdownlatch(用于计算分段list集合个数),多线程并发插入数据。程序方面对Excel中的数据去重:将数据封装为对象,对象重写equals方法和hashCode方法,这里equals就只对那2个字段进行比较即可,并将对象放入set中去重。数据库方面去重:利用数据库设置联合唯一索引。然后通过insert ignore into语句去执行。insert ignore into:重复或语句错误报错都会被忽略(根据主键和唯一索引判断重复)
2.Excel批量导入10w数据量,多用户同时导入,除去主键其余字段相同去重
程序方面的去重与上一点大致相同。区别是equals和hashCode需要判断全部的属性字段。
以上也可以考虑用redis的zse