私は、他のテーブルから収集したデータを1日に2回入力したテーブルを用意しています。MYSQLでデータをマージする最良の方法
これを実行する手順は、次のとおりです。テーブルに配置されるすべてのデータを取得し、テーブルを切り捨て、すべてのデータを再度挿入します。
パフォーマンス面でこれを実行する最善の方法はありますか?実際に変更されたものだけを更新する方法はありませんか?新しいデータを挿入し、残りの部分をスキップしますか?
私は、他のテーブルから収集したデータを1日に2回入力したテーブルを用意しています。MYSQLでデータをマージする最良の方法
これを実行する手順は、次のとおりです。テーブルに配置されるすべてのデータを取得し、テーブルを切り捨て、すべてのデータを再度挿入します。
パフォーマンス面でこれを実行する最善の方法はありますか?実際に変更されたものだけを更新する方法はありませんか?新しいデータを挿入し、残りの部分をスキップしますか?
あなたがマージしてテーブルを更新するためにこれを辿ることができます。
UPDATE multiple tables in MySQL using LEFT JOIN
UPDATEを管理したり、あなたがこの方法を使用することができます挿入するには:
Insert into a MySQL table or update if exists
もちろん、すべてはあなたに依存しますDB構造、どのような種類のデータをマージしているのか、そして主にどのキーが利用可能であるかなどです。
よろしく
CREATE TABLE new LIKE real;
INSERT INTO new ...;
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
賛否/短所:
real
を持っています。 (RENAME
は「瞬時」と「原子」です。)UPDATE
とINSERT
の組み合わせよりも遅くなる可能性がありますが、これは実際のところ私の最初のコメントに基づいていますか?あなたが聞かせているよりも多くがある場合、新しいデータを「摂取」急速の他の側面について説明した、http://mysql.rjweb.org/doc.php/staging_tableを参照してください。
これは、新しいデータを挿入することでこの問題を解決すると思います。しかし、いくつかのデータが変更されたら、私もそれを更新する必要があります。これで問題は解決しませんか? –
不明な点...使用可能なデータからテーブルが完全に構築されている場合は、私のメソッドが機能します。 _only changes_が利用可能な場合、私のメソッドには致命的な欠陥があります。あなたの声明を明確にしてください... ...人口統計データ...収集されたデータから... " –