2016-09-01 3 views
1

更新が必要なテーブルがあります。しかし、変更されたデータの量(私たちが取得した新しいデータとデータベース内のデータを比較する)は不明です。部分的にテーブルを更新するときのSELECTとUPDATEのパフォーマンス比較

これを実装する方法は2つ考えられます。

  1. すべてのデータを選択し、Webサーバーで比較します。その後、変更されたものは のみ更新されます。
  2. すべてのデータを更新するだけです。

パフォーマンスの境界線があります。影響を受ける行が1,000以下であれば、方法2が良いかもしれません。

私の質問は:

  1. は、このための一般的な基準はありますか?
  2. 更新操作との比較を一般的に選択できますか?

データベースが必要な場合はMySQLであるとします。

+2

これは、マイクロ最適化と呼ばれます。通常の方法で問題に遭遇した後は、そのような最適化について考えるべきです(更新を使用して)。 – Solarflare

答えて

0

あなたは(おそらくほとんど同じデータで)テーブル全体を交換する場合は、それがどのアプローチを心配し、このようにそれを行う、としないようにかなり単純です:

CREATE TABLE new LIKE real; 
Load the new data entirely into `new` 
RENAME TABLE real TO old, new TO real; -- atomic and instantaneous (no downtime) 
DROP TABLE old; 

の一部のみの場合行が使用可能であり、一時表にロードしてから、マルチ表UPDATEを実行して、新しい値を実表に転送します。

新しいデータに新しい行がある可能性がある場合は、新しい行を見つけるために別の手順が必要で、INSERT ... SELECT LEFT JOIN ...を実際の表に追加する必要があります。

さらに詳しい説明が必要な場合は、さらに詳しく記入してください。

関連する問題