2
MySQLでのトリガーvsストアドプロシージャのパフォーマンス
ここのDBA.StackExchangeの投稿(レコードのリビジョン番号を維持するためのトリガーのベストプラクティスは何ですか?)は、MySQLのパフォーマンスに関する興味深い質問(少なくとも、私にとって興味深い)を生み出しました。 コンテキストは、更新される行ごとにテーブルにレコードを挿入することです。行が更新される前に、以前の値を保存してから、列の1つ(「バージョン」列)を増分します。 これをトリガー内で実行すると、うまく機能します。MySQLの場合、トリガーは行ごとに行われるため、簡単に解決できます。現在テーブルにあるデータを選択し、それをロギングテーブルに挿入して、新しいデータの「バージョン」列を更新します。 ただし、このロジックをストアドプロシージャに移動することは可能です。その場合、挿入を実行してから、テーブルの「バージョン」列をインクリメントします。全体がベースに設定されます。 それで、この挿入を実行することになると、セットベースのストアドプロシージャアプローチまたはトリガーベースのアプローチを使用する方がパフォーマンスが良くなりますか? この質問はMySQLに関するものです(行ごとのトリガーがあるため)。ただし、他の行ごとのトリガーDBMSにも当てはまります。