2012-01-18 11 views
0

私はあるデータベースから別のデータベースに情報を転送するデータ転送ツールを持っています。 1時間ごとに、テーブルのすべての行に対してUPDATEが発行されます。私はすでに、あるテーブルから他のテーブルにデータをダンプするためのINSERTトリガを持っています。他のテーブルを編集するためにUPDATEトリガを追加しましたが、余分な処理を行うと、UPDATEプロセス全体がゆっくり実行されます。MySQL:全体の行を比較

私は、古い行と新しい行を比較するIF文でUPDATEトリガの本文を折り返して、何も変更されていなければ処理をスキップしたいと思います。行全体を別の行と比較することは可能ですか?

IF new = old THEN ... 

または、各列を個別にチェックする以外の方法はありませんか?

+0

http://stackoverflow.com/questions/6296313/mysql-trigger-after-update-only-if-row-has-changed(タイムスタンプ列)の回避策を試すことができます。 – a1ex07

答えて

0

ここでスピードが問題になる場合は、最後に編集したタイムスタンプまたはチェックサムを保存します。あなたが三列ABCを持つテーブルがある場合

、後者のアプローチを使用して、私はまた、新しい行、cksumを含めるには、このスキームを変更します。

何かを挿入するたびに、高速ハッシュアルゴリズム(MD5など)を使用して生成された値をcksumに挿入します。何かを挿入すること、あなただけcksumフィールドと比較しなければならない時はいつでもこのチェックサムは、この方法で

checksum = MD5(A + B + C); 

のようなものである可能性があります。

0

悲しいことに、各列を個別に比較する必要があります。おそらくあなたが望んでいた答えではありません。