数据库 A 有 1000w 数据
数据库 B 有 200W 数据,AB 数据库结构一样,都存在字段 C
本地测试环境,mysql8,16G 内存,就我一个用户
请问,如何优化,才能快速在 A 表中标记 AB 两表中 C 字段重复的数据
我测试了下,运行时间太长,需要优化,麻烦懂的大佬指点下啊
我测试了下,运行时间太长,需要优化,麻烦懂的大佬指点下啊
|
1
只需要这一次整理完就行 ,并非正式环境也需要这样
|
|
2
发一下你的方法呀
运行时间太长主要瓶颈在哪。。cpu ? 内存? |
|
MohansonMar 14, 2020 via Android
3
布隆过滤器,O(N), 不存在比它还快的算法了。以前都是 64m 内存玩的,16g 能给你做到 9 个 9.
|
|
luckyrayyyMar 14, 2020 via iPhone
4
大数据去重➕允许有错误,考虑布隆过滤器
|
|
5
如果一次性的话,直接小表读出来存到 dict 里,大表顺序读判断就是了啊,16g 内存绰绰有余了,才一千万,又不是一千亿,不用想那么多吧
需要重复做的话,这是结构设计问题,应该在源头来解决吧 |
|
miceanMar 14, 2020 via Android
6
字段 c 有索引吧,先试试简单的,每次从 a 表读 50 万数据,去和 b 表比较,然后把结果保存。别想着一次性干完。
|
|
wanguorui123Mar 14, 2020 via iPhone
7
Redis 哈希去重复
|
|
8
我对数据库不太懂,也是一次性任务,就想把这一次过去,目前我感觉 mysqld 的内存占用只有 200M+ cpu 20%
|
|
10
mysql8 MyISAM
|
|
11
@Sumzibuyu #9 如果重复很多,估计还不如重新插入到个新表,然后删掉老表改表名称来的更快的吧,或许你可以生成好 sql,然后用数据导入 loaddata 试试看或许会快一点
|