V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
reaCodes
V2EX  ›  程序员

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

  •  
  •   reaCodes ·
    zhatlas · May 30, 2020 · 2661 views
    This topic created in 2161 days ago, the information mentioned may be changed or developed.
    7 replies    2020-05-31 11:11:25 +08:00
    sandrew1945
        1
    sandrew1945  
       May 30, 2020
    用 dbname.tablename 查 count(id),然后看有没有大于 1 的呗
    reaCodes
        2
    reaCodes  
    OP
       May 30, 2020
    @sandrew1945 我没明白,能不能详细点说一下,麻烦了
    sandrew1945
        3
    sandrew1945  
       May 31, 2020
    @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  
    OP
       May 31, 2020
    @sandrew1945 好的,感谢,明天我试试
    msg7086
        5
    msg7086  
       May 31, 2020
    甚至你把所有的 id 拿出来在程序里排查一下不就行了吗。
    yiyi11
        6
    yiyi11  
       May 31, 2020 via Android
    那得看数据量,如果数据量不大,采取 3l 的方法直接查。
    如果数据量大,但是预计一个表可以存下所有的 id,考虑 5l 的方法,考虑用一个临时表存放所有 id,用唯一索引来查。
    如果数据量还是巨大,一个表存放效率很低,考虑并行计算,重复 id 即至少 2 个表存在至少某条记录有交集。首先把 2 个表的唯一组合全列出来,然后把所有组合分发到 n 个服务自行计算,保证每个服务同时处理的数据量不超过 2 表(因为考虑到数据巨大),分发任务的时候还要注意错开一下,不要单个表同时被多个服务查,以免数据库压力过大。
    reaCodes
        7
    reaCodes  
    OP
       May 31, 2020
    @yiyi11 感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2397 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:00 · PVG 00:00 · LAX 09:00 · JFK 12:00
    ♥ Do have faith in what you're doing.