请问现在有同一个 MySQL 有相似的 30 个数据库,这 30 个数据库中都有相同结构的表 A,如何查询出这三十张相似的表 A 有无重复记录(主键重复)?

2020-05-30 22:39:21 +08:00
 reaCodes
2306 次点击
所在节点    程序员
7 条回复
sandrew1945
2020-05-30 23:18:36 +08:00
用 dbname.tablename 查 count(id),然后看有没有大于 1 的呗
reaCodes
2020-05-30 23:20:19 +08:00
@sandrew1945 我没明白,能不能详细点说一下,麻烦了
sandrew1945
2020-05-31 00:23:18 +08:00
@reaCodes
select t.id, count(t.id) from (
select id from db1.a
union all
select id from db2.a
.
.
.
union all
select id from db30.a
) t
group by t.user_id
reaCodes
2020-05-31 00:26:30 +08:00
@sandrew1945 好的,感谢,明天我试试
msg7086
2020-05-31 03:45:00 +08:00
甚至你把所有的 id 拿出来在程序里排查一下不就行了吗。
yiyi11
2020-05-31 11:10:03 +08:00
那得看数据量,如果数据量不大,采取 3l 的方法直接查。
如果数据量大,但是预计一个表可以存下所有的 id,考虑 5l 的方法,考虑用一个临时表存放所有 id,用唯一索引来查。
如果数据量还是巨大,一个表存放效率很低,考虑并行计算,重复 id 即至少 2 个表存在至少某条记录有交集。首先把 2 个表的唯一组合全列出来,然后把所有组合分发到 n 个服务自行计算,保证每个服务同时处理的数据量不超过 2 表(因为考虑到数据巨大),分发任务的时候还要注意错开一下,不要单个表同时被多个服务查,以免数据库压力过大。
reaCodes
2020-05-31 11:11:25 +08:00
@yiyi11 感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX