我有2个带有tth哈希的表,我需要得到哪些表,它们存在于第一个表中但不存在于第二个表中。 我会尝试这样的事情:
SELECT f.*
FROM files as f
LEFT JOIN trans as t ON t.tth=f.tth
WHERE t.id IS NULL
但它的工作速度非常慢,在第一个表65k行,第二个表有130k行,所以查询工作约5分钟。 这里存在另一种方式? 感谢。
P.S。两个表中的所有列都有索引。
答案 0 :(得分:3)
谢谢,OMG Ponies,我读了一篇关于链接的文章,还有一个使用NOT IN的优化方法,查询率约为0.6秒。
SELECT f.*
FROM files as f
WHERE
f.tth NOT IN (
SELECT trans.tth
FROM trans as t
-- We do not need to look entries across entire table, only from already matched, so create selection "limits" with INNER JOIN.
INNER JOIN files ON files.tth=t.tth
)