V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
reaCodes
V2EX  ›  程序员

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

  •  
  •   reaCodes ·
    reaCodes · 230 天前 · 1737 次点击
    这是一个创建于 230 天前的主题,其中的信息可能已经有所发展或是发生改变。
    7 条回复    2020-05-31 11:11:25 +08:00
    sandrew1945
        1
    sandrew1945   230 天前
    用 dbname.tablename 查 count(id),然后看有没有大于 1 的呗
    reaCodes
        2
    reaCodes   230 天前
    @sandrew1945 我没明白,能不能详细点说一下,麻烦了
    sandrew1945
        3
    sandrew1945   230 天前
    @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
        4
    reaCodes   230 天前
    @sandrew1945 好的,感谢,明天我试试
    msg7086
        5
    msg7086   230 天前
    甚至你把所有的 id 拿出来在程序里排查一下不就行了吗。
    yiyi11
        6
    yiyi11   230 天前 via Android
    那得看数据量,如果数据量不大,采取 3l 的方法直接查。
    如果数据量大,但是预计一个表可以存下所有的 id,考虑 5l 的方法,考虑用一个临时表存放所有 id,用唯一索引来查。
    如果数据量还是巨大,一个表存放效率很低,考虑并行计算,重复 id 即至少 2 个表存在至少某条记录有交集。首先把 2 个表的唯一组合全列出来,然后把所有组合分发到 n 个服务自行计算,保证每个服务同时处理的数据量不超过 2 表(因为考虑到数据巨大),分发任务的时候还要注意错开一下,不要单个表同时被多个服务查,以免数据库压力过大。
    reaCodes
        7
    reaCodes   230 天前
    @yiyi11 感谢
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2748 人在线   最高记录 5298   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:17 · PVG 20:17 · LAX 04:17 · JFK 07:17
    ♥ Do have faith in what you're doing.