0

私は、データベース(MySQL)にアイテムをダウンロードして更新する方法を最も効果的に考えています。私は数万から数百のアイテムを扱っています。

アイテムを含むテーブル(table_a)があります。毎晩新しいデータをダウンロードしていて、これらのデータはtable_bに保存されています。つまり、真夜中です。データをtable_bにダウンロードし、すべてのデータをダウンロードした後、table_btable_aの間でデータの比較を開始します。table_bの項目がtable_aに存在する場合、table_aの3〜4の数値をtable_bで編集します。このアイテムがtable_aにない場合は、このアイテムをtable_aに保存します。

このようにして、テーブルtable_aのアイテムを1日に1回更新しています。この方法の問題-この手順は非常に遅いです...約20.000アイテムの場合、約25〜30分かかります。(私のアプリはRoRで実行されています)

お願いしたいのですが、新しいレコードをテーブル(table_a)に更新するためのより良い、特に高速な方法を教えてください。とても感謝しています...よろしくお願いします、M。

4

2 に答える 2

2

必要なすべてのデータがデータベースで利用できる場合、ロジックは圧倒的に複雑でなく、頻繁に変更されることもありません。パフォーマンスが問題になるため、ロジックを単一のSQLステートメントに移行することは最も明白なオプションの1つです。

これに沿った何か:

INSERT INTO table_a SELECT * FROM table_b ON DUPLICATE KEY UPDATE value1 = table_b.value1、value2 = table_b.value2、....;

于 2011-07-03T15:01:07.900 に答える
0

2つの提案:

  1. インデックス:これらはルックアップを高速化するはずです。
  2. ハッシュ:長い文字列を比較する場合は、データベースに保存してハッシュを比較する前に、ハッシュを作成することをお勧めします。
于 2011-07-03T14:00:19.363 に答える