【发布时间】:2010-09-26 02:56:58
【问题描述】:
我有 2 个表(A 和 B)具有相同的主键。我想选择 A 中而不是 B 中的所有行。以下工作:
select * from A where not exists (select * from B where A.pk=B.pk);
但它看起来很糟糕(A 中只有 100k 行约 2 秒,B 中少 3-10k 行)
有没有更好的方法来运行它?也许作为左连接?
select * from A left join B on A.x=B.y where B.y is null;
根据我的数据,这似乎运行得稍微快一些(~10%),但总的来说呢?
【问题讨论】:
-
你的意思是你的表 A 有 100k 行,表 B 有 100k 行?或者每个表中只有大约 300 行,这意味着 100,000 行扫描(或者,希望是索引扫描)。
标签: mysql join not-exists