[前][次][番号順一覧][スレッド一覧]

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

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/


[前][次][番号順一覧][スレッド一覧]