优化左连接

Optimizing a left join

我正在尝试从 table 中查找一些不在另一个 table 中的数据。

我尝试使用不同的解决方案,但我的问题始终是性能(table_a 有约 100 000 行,table_b 有约 580 万行)。

有没有更快(呃)and/or(更)有效的方法来做到这一点?

提前致谢...

SELECT
    *
FROM
    table_a a
LEFT JOIN
    table_b b ON b.field_one = a.field_one
WHERE 1
    AND b.id IS NULL

您可以尝试使用此的 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)

除非那些表真的很宽(很多列),如果有这么多数据和正确的索引,它不应该花这么长时间。