Mysql批量插入数据之前如何判断重复?
阿神
阿神 2017-04-17 13:41:14
0
5
619

使用MySQL做统计,需要查询大量数据计算后重新组装各种数据入库,考虑到大数据量和性能问题,要批量插入数据库,而且可能会出现重复的情况,如何判断重复呢?

如果在入库前判断重复,需要每条数据都select一下判断,不重复的放到数组再一次批量插入,但是这个查询量也是很大的。或者建立联合唯一约束,但是如果其中一条数据插入失败,则整个插入操作都失败。

现在的做法是先不判断重复,入库后,再找出重复的删掉。。

有没有更好的办法呢?

2016-01-19号补充:重复的判断条件是某几个字段的值是否相同

阿神
阿神

闭关修行中......

全員に返信(5)
刘奇

可以试试 replace into 或者 Insert into ..... on duplicate key update

参考:
http://blog.csdn.net/mchdba/article/details/8647560
http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

いいねを押す +0
Ty80

批量入库的时候建议使用mysql导入工具——mysqlimport,可以设置忽略重复数据。
http://www.runoob.com/mysql/mysql-database-import.html

いいねを押す +0
小葫芦

我觉得你先插入再删掉的方法不错。
你说的重复是“主键重复”的数据吧?那么你要插入的必定是最新的数据。我会先删旧数据,假设主键是'uid',先开事务,再'delete ... where uid in (...)',然后插入新数据,提交关事务。
如果还想优化,用'select ...where uid in ()' 一次查出已经有的数据,然后不插入那些重复数据。

いいねを押す +0
迷茫

建个临时表全插入 再insert

いいねを押す +0
迷茫

@好雨云 他说的replace into 或者 Insert into ..... on duplicate key update算是一种解决方案。

不过建议使用Insert into ..... on duplicate key update

当你数据量大的时候,效率是比replace高的,究其原因是因为replace插入数据时候需要额外维护主键索引。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!