优化左连接
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)
除非那些表真的很宽(很多列),如果有这么多数据和正确的索引,它不应该花这么长时间。
我正在尝试从 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)
除非那些表真的很宽(很多列),如果有这么多数据和正确的索引,它不应该花这么长时间。