存在我有一個多億的表A,其中包括字段1發現在表A記錄不表B中的MySql
我有另一個類似的表B
我已經做了各種查詢表之前A /字段1
我想嘗試找出表B中的那些Field1s我將需要在
運行類似的查詢所以我想基本上是從哪裏表B中抽取字段1的列表Field1不存在於TableA中,所以我可以開始p處理這些記錄。
存在我有一個多億的表A,其中包括字段1發現在表A記錄不表B中的MySql
我有另一個類似的表B
我已經做了各種查詢表之前A /字段1
我想嘗試找出表B中的那些Field1s我將需要在
運行類似的查詢所以我想基本上是從哪裏表B中抽取字段1的列表Field1不存在於TableA中,所以我可以開始p處理這些記錄。
我認爲最快的方法是:
SELECT b.*, a.id
FROM b
LEFT JOIN a
ON b.field1 = a.field1
WHERE a.id IS NULL;
左連接創建臨時表。即使索引良好,這在大型數據庫中也不會那麼快。 –
是的這是正確的,但我認爲這是這種情況下不可避免的其中一種情況...其他建議的解決方案基於相關的子查詢,這在執行時間上不可伸縮。 – Jean
select field1
from tableB
where not exists (select * from tableA where tableB.field1 = tableA.field1)
嘗試:選擇場FROM表B WHERE TableB.field1 NOT IN(SELECT字段1 FROM表A) – Revive
刪除我的回答,因爲它是一樣的以上評論,我沒有注意到它。 – Joe