2011-11-09 4 views
0

トリガーズのGuy Harrisonの「MySQLストアドプロシージャープログラミング」では、トリガーはサマリーテーブルを維持する方法です。MySQLでの派生データの管理:トリガーと定期的なジョブの比較

ここの例のサマリテーブルは、顧客の売上の合計値を格納するテーブルです。このデータは、個々のトランザクションを記録する「売上」テーブルから派生したものです。この例では、 'sales'テーブルのBEFORE INSERT、BEFORE UPDATEおよびBEFORE DELETEトリガを使用して、 'customer_sales_totals'テーブルを同期させています。 BEFORE INSERTトリガーは、 'customer_sales_totals'テーブルでselectを実行し、そこに行を挿入するか、既存のテーブルを更新します。

さて、のように仮定してみましょう:

  • 毎日の販売 'テーブルに挿入された何千ものレコードの数十/数百があります。
  • 'customer_sales_totals'が期限切れになることはありません。
  • 各顧客には多くの売上があります(売上数は顧客数よりもはるかに多い)。

このシナリオでは、トリガーではなく定期的に優先度の低いジョブが 'customer_sales_totals'をより効率的に管理する方法になりますか?

おかげ Tymek

答えて

0

私は個人的には、メンテナンスのために定期的なジョブオプションを好みます。コードは1か所に配置されており、より簡単に文書化することができ、テストはより簡単に実行できます。 トリガーにはファンがいて、それは確かにもっと微妙ですが、私の意見では、コードを分割することになりました。実際の日常生活においては、これを見るためには専門家が必要なので、バグに遭遇したときにはスタッフの編成に柔軟性がなく、頭が傷つきます。

関連する問題