我有两个 MySQL 表,表 A(80,00,000 条记录)和表 B(20,00,000 条记录),它们共享一个公共(public)列 mobile_no
并且它的数据类型是 BIGINT (20)
。我想比较它们并获取不匹配的记录。
我有以下解决方案,它仅适用于小型数据集:
SELECT mobile_no FROM A
WHERE NOT EXISTS(SELECT mobile_no
FROM B where A.mobile_no = B.mobile_no).
Note: I have applied indexing on column mobile_no in both tables.
当我运行上述查询时,执行在默认时间(10 分钟)后停止。我们也增加了时间,但仍然没有获得大量数据的输出。
如果有人给我解决这个问题,我将不胜感激。
最佳答案
试试这个,让我们知道它是否适用于指定的大型数据集..
SELECT A.mobile_no
FROM A
LEFT JOIN B ON A.mobile_no = B.mobile_no and B IS NULL
如果它仍然不能在合理的时间范围内给您结果...那么请尝试在您正在处理的两个表上创建索引。
你可以通过这个链接Indexes and Fine tuning了解如何微调您的查询以使其更快地运行。
关于mysql - 从具有大量数据的 2 个 Mysql 表中获取未处理的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49850195/