の中に
`synchro_newitems`
テーブル私はすべての新しいアイテム(外部ソースから)〜約500k行を持っています。1つの列があります:
`new_ids`
の中に
`synchro_olditems`
テーブル私はすべての現在のアイテム(これも外部ソースからのもの)を持っています〜約500k行。1つの列があります:
`old_ids`
私はから新しいアイテムだけを入手しなければなりませんsynchro_newitems
:
(新商品)= synchro_newitems
(-)synchro_olditems
3番目のテーブルに違いを挿入してそれを試してみました:
INSERT INTO `synchro_diff` (`id`)
SELECT DISTINCT new_ids FROM synchro_newitems
LEFT JOIN
synchro_olditems ON synchro_newitems.new_ids = synchro_olditems.old_ids
WHERE synchro_olditems.old_ids IS NULL
(「NOTIN」と同様)
少量の行で機能します。ただし、比較する行が500 000ある場合は、失敗します。
私は簡単に試しました:
DELETE FROM synchro_newitems WHERE exists(SELECT * FROM synchro_olditems)
しかし、それはうまくいきません..あなたはそれを行うためのいくつかの賢い方法を知っていますか?