我正在尝试从表中找到一些不在另一个表中的数据。
我尝试使用不同的解决方案,但我的问题始终是性能(table_a有~100 000行,table_b有~580万行)。
是否有快速(呃)和/或(更有效)的方法来做到这一点?
提前致谢...
SELECT
*
FROM
table_a a
LEFT JOIN
table_b b ON b.field_one = a.field_one
WHERE 1
AND b.id IS NULL
答案 0 :(得分:2)
您可以尝试使用此NOT EXISTS()
版本,这可能更有效(不一定):
SELECT * FROM Table_a a
WHERE NOT EXISTS(SELECT 1 FROM Table_b b
WHERE a.field_old = b.field_one)
您还应该考虑在表格上添加(如果您还没有)索引:
Table_a(Field_one)
Table_b(Field_one)
除非这些表格非常宽(很多列),如果这些数据具有正确的索引,它就不应该花这么长时间。