2 つの異なるデータベースのテーブルから別のデータベースにデータをインポートする PHP スクリプトを作成しています。私はサンプルデータで問題なく動作していますが、今では最終的な用途に似たデータを使用するようになりました.テーブルごとに2,500万以上のレコードがあり、毎日成長しています. 明らかに、効率は少し心配です。
これが現在の仕組みです。キーの整合性を維持するために、いくつかのフィールドを追加して、テーブル構造をコピーします。
other1.someTable (field1, field2, field3) Pk = [field1, field2]
other2.someTable (field1, field2, field3) Pk = [field1, field2]
mydb.someTable (id, source, field1, field2, field3)
Pk = id, Unique key = [source, field1, field2]
そして、ここにSQLがあります。ON DUPLICATE KEY UPDATE
このインポートは定期的に実行し、「mydb」のデータを更新する必要があるため、ステートメントがあります。ありがたいことに、「他の」データベースからレコードが削除されることはありません (と思います!)。
INSERT INTO mydb.someTable (source, field1, field2, field3)
SELECT 1, field1, field2, field3 FROM other1.someTable
ON DUPLICATE KEY UPDATE field1 = field1, field2 = field2, field3 = field3;
INSERT INTO mydb.someTable (source, field1, field2, field3)
SELECT 2, field1, field2, field3 FROM other2.someTable;
ON DUPLICATE KEY UPDATE field1 = field1, field2 = field2, field3 = field3;
私の質問はこれです:これはこれを行うための最良の方法ですか? 何百万ものレコードがあり、テーブルごとに合計で何ギガバイトものデータになることを考えると、より高速な他の方法はありますか?