私は別のテーブル参照IDに基づいて大きなテーブルレコードを更新/挿入します。
という3つのテーブルを持つ内部在庫システムを持っています。株式 - CSVファイルから毎日更新されます。
---------------------------------
| id | MODELNO | Discount | MRP |
---------------------------------
| 1 | MODEL_1 | 40% | 900 |
| 2 | MODEL_A | 20% | 600 |
---------------------------------
毎日このテーブルは、データが商人のCSVファイルからインポートされ切り捨てられ、新しい銘柄である。(6万のレコードの周り)
B。布は、マスター - マスターの服のデータベースを
----------------------------------------
| ref_id | MODELNO | Name | MRP |
----------------------------------------
| 80 | MODEL_1 |Some Dress | 900 |
| 81 | MODEL_A |Another Dress| 600 |
----------------------------------------
MODELNO
がref_id
主キーユニークです。この表は内部在庫アプリケーションの一部です(約450万レコードあり)
cです。 Inventoryテーブル - それは株式に基づく内部アプリケーション
-------------------------------------------------
| id | ref_id | Name | MRP | status |
-------------------------------------------------
| 1 | 80 |Some Dress | 900 | ACTIVE |
| 2 | 81 |Another Dress| 600 | INACTIVE |
--------------------------------------------------
この表は、製品の利用可能在庫を保存する、の一部だと割引が40%を超える製品がデフォルトINACTIVE
によって他ACTIVE
ある場合場合。
必要な機能は毎日、株価表レコードをループするスクリプトを実行する必要があり、MODELNO
在庫表の在庫を更新することです。在庫表のレコードが存在しない場合は、追加される。
今まで私が試したことは、PHPスクリプトです。 a。まず、すべてのレコードのインベントリテーブルのステータスをINACTIVEに設定します。 b。また、株式表の各レコードについて、MODELNOがCloths Masterテーブルに存在するかどうかを確認します。 b。レコードが存在する場合は、ref_idを取得し、それに応じてインベントリテーブルと更新/挿入レコードにref_idが存在するかどうかを確認します。
問題は、スクリプトが完了するまでに8時間以上かかることです。
あなたは上記の機能を実装するのに使用できる効率的な方法を提案できますか?
注: インベントリテーブルへのすべての挿入と更新は、CodeIgniterの一括挿入/更新機能を使用して実行されます。 在庫DBに存在しない商品が少ないため、すべてのステータスをINACTIVEに設定します。
ヒント: '%'は保存しないでください。 – Strawberry
それを行うだろう、btw私はDBにCSVファイルをダンプするMySQLのロードインラインを使用している。また、MODELNOのインデックスを追加しました。ref_idフィールド – epynic