如何比較兩個包含數百萬條記錄的MySQL數據庫表的兩列?我基本上比較TableA和TableB的電話號碼。 TableA中的數字將根據TableB中的數字進行檢查,如果找到,則會刪除重複的數字。由於返回的數字存儲在數組中,因此我使用了array_intersect($array1, $array2)
。這將返回重複的數字,但問題是它消耗太多內存並需要永久執行。在PHP中比較兩列和數百萬條記錄
有沒有辦法做到這一點,而不佔用太多的內存?表A和表B中包含的數字各超過1000萬。
如何比較兩個包含數百萬條記錄的MySQL數據庫表的兩列?我基本上比較TableA和TableB的電話號碼。 TableA中的數字將根據TableB中的數字進行檢查,如果找到,則會刪除重複的數字。由於返回的數字存儲在數組中,因此我使用了array_intersect($array1, $array2)
。這將返回重複的數字,但問題是它消耗太多內存並需要永久執行。在PHP中比較兩列和數百萬條記錄
有沒有辦法做到這一點,而不佔用太多的內存?表A和表B中包含的數字各超過1000萬。
您可以使用此查詢,這將返回同時存在於表A和表B中的所有數字:
SELECT DISTINCT TableA.Number
FROM TableA INNER JOIN TableB
ON TableA.Number = TableB.Number
你不想讀那麼多的數據到內存中。爲什麼不直接在SQL中完成這一切?
如果你想找到表A的所有記錄不表B中存在只是這樣做:
SELECT a.field
FROM
table_a AS a
LEFT OUTER JOIN table_b AS b
ON a.field = b.field
WHERE b.field IS NULL
如果你想刪除從A的所有行沒有比賽B中,你也可以很容易地在SQL中做到這一點:
DELETE a
FROM
table_a AS a
LEFT OUTER JOIN table_b AS b
ON a.field = b.field
WHERE b.field IS NULL
在mysql方面比較。 – Aris 2013-05-09 19:50:46