如何比较两个包含数百万条记录的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