mysql:12795
From: 柴垣 <柴垣 <akiro@xxxxxxxxxx>>
Date: Thu, 23 Feb 2006 04:19:52 +0900
Subject: [mysql 12795] 別テーブルに基づくupdate
柴垣です。いつも勉強させていただいています。 別テーブルを元にして、テーブルの更新をしなければなら ないことがちょくちょくあります。 例えば、日々の売上データを暫定単価のままに登録して おいて、その単価の修正テーブルがあとになって送られて くるような場合です。 量が多い場合、1件ずつ、update するのも大変なので 一括した処理をしたいのですが、MySQL 3.23 の場合、別 テーブルに基づく update は出来ないようなので、現在は 1.該当レコードに、単価情報を結合して、一時テーブルに insert 2.該当レコードを、元テーブルから delete 3.一時テーブルの内容を元テーブルに insert で戻す という手順を取っています。 しかし、上の方法だと、 1.基幹テーブルから大量のレコードが頻繁に delete される ことになり、障害に遭遇する危険性が高いのではないか。 2.auto_increment のフィールドの値が、実態以上に大きく なってしまう。 3.レコードが削除された領域は再利用されるといっても、 ファイルの中身にフラグメント分断が大量に発生して効率が 落ちるのではないか。 などと心配があります。 現在検討している対象は、年間10万レコード程度の、事例な のですが、いまの方法でいいのかどうか、あるいは1件ずつ、 update していくほうが総合的に望ましいのかどうか、または、 べつのいい方法があるのかどうかなど、なにかアドバイスが あったらお願いしたいと思います。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 柴垣 顕郎 akiro@xxxxxxxxxx _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/