我有两个表,其中大量数据表示一个表中有100万个而另一个表中有50万个现在我想仅提取第一个表中存在但不存在于第二个表中的那些值(基于单个列)。我使用了以下代码:
SELECT t1.column FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.column = t2.column
WHERE t2.column IS NULL;
以上查询需要花费大量时间。我希望以有效的方式做到这一点。
答案 0 :(得分:0)
所有where条件字段的DO索引..然后使用mysql Innodb引擎.. Innodb将快速从数据库中检索数据..
答案 1 :(得分:0)
Myisam的读取速度可能比innodb快。
使用索引,它是否使用了连接的索引(为查询执行EXPLAIN)。您加入的列是唯一的吗?
未能尝试使用EXISTS
SELECT t1.column
FROM Table1 t1
WHERE NOT EXISTS
(
SELECT 1
FROM Table2 t2
WHERE t2.column = t1.column
);