mysql - 从具有大量数据的 2 个 Mysql 表中获取未处理的数据

标签 mysql sql

我有两个 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/

相关文章:

sql - MS Access 中的条件默认值

sql - 如何使用PostgreSQL显示数据库查询中的记录

php - 将列添加到表会返回错误,指出 SQL 语法错误

php - 无法使用PHP从MySQL中删除记录

mysql - 连接和左连接

php - MySQL:为什么忽略表单字段中的文本?

mysql - Zenoss MySQL 查询 - 每小时事件

mysql - 操作数应包含 1 列 我在执行删除查询时收到此错误

sql - 在 Sqlite 中使用 REGEX 匹配和替换字符串?

php - 从php查询数据库