大佬们好,我用的 mongodb4.2,目前数据导入进去了,80 亿数据,导了很久。。然后在建联合唯一索引的时候,有数据重复,报错无法创建。。。
有没有什么好的方法可以建联合唯一索引,删了数据先建索引再重新导,实在太折腾太慢了。。。
1
pupboss 2020-07-22 11:09:57 +08:00
空表先创建索引,再想办法导入,唯一索引重复的就会报错了
|
2
tikazyq 2020-07-22 11:11:15 +08:00
试一下把组合字段弄成一个组合键放在_id,直接插入就可以了,主键自动去重
|
3
Stypstive 2020-07-22 11:24:17 +08:00
使用 MongoDB 的 Bulk Operation,每 5 万条插入一次很快的。不要用 save 或 insert 方法,太慢了。
|
4
holajamc 2020-07-22 11:54:04 +08:00
借楼问一下 80 亿的数据查询效率如何呢?
|
5
aborigine 2020-07-22 12:04:07 +08:00
建新表,加索引,旧表导入新表,删旧表
|
6
aborigine 2020-07-22 12:05:56 +08:00
联合唯一不如把唯一索引的字段拼接以后取 hash 后单字段索引去重,有效降低索引大小及去重效率
|
7
Stypstive 2020-07-22 12:34:54 +08:00
或者找出来重复的数据,删除了,再建索引。
这是一个查找重复手机号的用户的数据的例子,你可以根据你业务改改。 var p = [ { $group: { _id: '$mobile', count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } } ] db.member_user.aggregate(p) |
8
dtgxx OP |