2014-06-23 35 views
0

存在我有一個多億的表A,其中包括字段1發現在表A記錄不表B中的MySql

我有另一個類似的表B

我已經做了各種查詢表之前A /字段1

我想嘗試找出表B中的那些Field1s我將需要在

運行類似的查詢所以我想基本上是從哪裏表B中抽取字段1的列表Field1不存在於TableA中,所以我可以開始p處理這些記錄。

+1

嘗試:選擇場FROM表B WHERE TableB.field1 NOT IN(SELECT字段1 FROM表A) – Revive

+0

刪除我的回答,因爲它是一樣的以上評論,我沒有注意到它。 – Joe

回答

1

我認爲最快的方法是:

SELECT b.*, a.id 
FROM b 
LEFT JOIN a 
ON b.field1 = a.field1 
WHERE a.id IS NULL; 
+0

左連接創建臨時表。即使索引良好,這在大型數據庫中也不會那麼快。 –

+0

是的這是正確的,但我認爲這是這種情況下不可避免的其中一種情況...其他建議的解決方案基於相關的子查詢,這在執行時間上不可伸縮。 – Jean

0
select field1 
from tableB 
where not exists (select * from tableA where tableB.field1 = tableA.field1) 
相關問題