需求

每天从A表中取数据,存放到B表中。需要对插入B表中的数据进行去重

去重解决方案

拿到A表中数据之后,有三种方案

  1. 【直接查询法】查询B表,检测是否重复,重复即update,不重复则insert
  2. 【replace-into法】使用replace-into语句
  3. 【insert-on-duplicate法】使用insert-on-duplicate语句

适用范围与限制

  1. 直接查询法适合数据量较少,开发任务较紧急的情况。数据量一大性能会很差。
  2. replace-into 需要有主键或者唯一索引约束才能生效。在找到重复数据时会将原有数据删除,然后插入一条新数据。自增字段会改变。需要小心的一点是,如果设置了级联删除,那么其他表的关联数据会被删除。
  3. insert-on-duplicate 能够直接判断数据是否重复,并且自增字段不改变。但是insert-on-duplicate语句语法较为复杂。