トリガーを開発するための以下の指針は、トリガーがパフォーマンスに与える影響を最小にすることを意図しています。
- 通常の状況では変更する行数が可能な限り少なくなるようにトリガー文を設計します。1行またはごく少ない数の行を変更するのが望ましいと言えます。
- 行トリガーによる複雑なカスケード アクションを避けます。
例えば、WHEN句に適切な条件を指定して、その句が検査される回数を制限します。
- 複雑な処理とデータの検証が必要なときにのみ、トリガーを使用します。
- マクロや宣言制約など、他の代替方法が優れているときには、そちらを使用してください。
- 多数の行を変更するトリガーに関連したテーブルを参照するアプリケーションは、スループットに大きな影響を与えることがあるので、そのようなアプリケーションは作成しません。
- トリガーされるデータ変更文に作業負荷を与えるトリガーは、作成しません。たとえば、次のようになります。
- リクエストごとに単一の行を変更する文では、起動するトリガーごとに追加のアクションが必要です。
- リクエストごとに多数の行を変更する可能性のある文では、行トリガーが影響を受ける各行にいくつかの副次的な変更を行なう必要があります。
- パフォーマンスに大きな影響を与える可能性があるので、トリガー テーブルに直接アクセスする行トリガー、またはOLD TABLEまたはNEW TABLE相関名によって遷移テーブルにアクセスする行トリガーで、結合操作または集約操作を必要とするものは作成しません。
- アプリケーションに対して行トリガーまたは文トリガーのどちらを実装するかを決める前に、それぞれの効果を比較します。