0

私は、毎日いくつかの外部製品フィードが供給されるアプリケーションを作成している最中であり、製品データベースにフィードを入力しています。ただし、製品データベースを最新のフィードと同期させておく必要があります。

以前、db から現在の商品リストを配列に取り込み、配列を最新のフィードと比較するという理論をもてあそんでいましたが、商品数が数千になるとすぐに打ちのめされました。(5000 レコードを取得しようとしたときにメモリが不足しました)。

したがって、少し調査した結果、おそらくTRIGGERSを使用して、解決策はおそらくSQL側にあるようです。どうすればいいのかよくわかりませんが、私の質問です。

したがって、同期プロセスで達成する必要がある 2 つの目的は次のとおりです。

1) データベースにまだ存在しない新製品を挿入します。これは、INSERT IGNORE メソッドで実現できます。

2) 最新のフィードに存在しない DB 上の製品を検索し、それらに対して何かを行います。(削除済みとしてフラグを立てるか、削除済みの製品テーブルに移動するなど)

ステップ2は私が問題を抱えているところです。おそらくすべての同期操作で、最新のフィードから製品を「Temp-Products」テーブルに挿入し、「製品テーブル」と「Temp-Products」テーブルを比較して、必要なレコードを見つけることを考えています。削除済みとしてフラグが立てられました。

アドバイスをお願いします。

ありがとう

4

1 に答える 1

1

明らかにこれは考え過ぎです。Anigel によって疑われ、さらに強化された解決策は、一時テーブル「products_temp」を作成して新しいフィードを保存することです。次に単純な結合を実行して、「products_temp」にはなく Products テーブルにある製品を見つけます。これは、製品が販売店で売り切れまたは削除されたことを示唆しています。

その後、クエリの結果に削除済み/売り切れ/その他のフラグを立てることができます。

私が使用したクエリは次のとおりです。

SELECT products.sku_number, products_temp.sku_number FROM products LEFT OUTER JOIN products_temp ON products.`sku_number` = products_temp.`sku_number` WHERE  products_temp.sku_number IS null
于 2013-07-30T14:05:50.890 に答える