我在两个不同的数据库中有大约2百万条记录,每个数据库有100万条记录。我想将两个表相互连接以找到差异,但由于数据大小,每次执行操作时mysql都会抛出超时错误。这是我的问题:
SELECT id FROM db1.table1 AS a INNER JOIN db2.table1 AS b ON ( b.Id != a.Id )
任何帮助将不胜感激!
答案 0 :(得分:0)
尝试使用MySQL子查询:
SELECT id FROM db1.table1 WHERE id NOT IN (SELECT id FROM db2.table1);
以上查询由两部分组成。括号内的第一部分从db2.table1中选择字段id,没有任何限制。此结果将用于外部结果,以从db1.table1中删除不需要的记录。
答案 1 :(得分:0)
您正在使用具有其他ID的所有db2记录加入每个db1记录。这就产生了大约一万亿行。
请尝试以下方法:
select * from db1.table1 where id not in (select id from db2.table1);
和
select * from db2.table1 where id not in (select id from db1.table1);
或合并:
select 'db1' as db, * from db1.table1 where id not in (select id from db2.table1)
union all
select 'db2' as db, * from db2.table1 where id not in (select id from db1.table1);