0

それぞれ何百万ものレコードを含む MySQL db テーブルから返された 2 つの列を比較するにはどうすればよいですか? 基本的に、TableA と TableB の電話番号を比較しています。TableA の数値は TableB の数値と照合され、重複する数値が見つかった場合は削除されます。array_intersect($array1, $array2)返された数値が配列に格納されているため、使用しました。これは重複した数値を返しますが、問題はメモリを大量に消費し、実行に時間がかかることです。

多くのメモリを消費せずにこれを行う方法はありますか? TableA と TableB に含まれる数値は、それぞれ 1,000 万を超えています。

4

2 に答える 2

1

それほど多くのデータをメモリに読み込みたくありません。これをすべてSQLで実行しないのはなぜですか?

テーブル B に存在しないテーブル A のすべてのレコードを検索する場合は、次のようにします。

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

B に一致しないすべての行を A から削除する場合は、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 
于 2013-05-09T19:57:18.800 に答える