TRIGGER
sは後続のクエリを処理するので便利ですが、パフォーマンスの観点からも利点がありますか?
2つまたは3つのクエリを
INSERT INTO table1 ...
UPDATE table2 ...
UPDATE table3 ...
トリガーベースのクエリとして
INSERT INTO table 1
トリガー付き
CREATE TRIGGER test
AFTER INSERT ON table1
FOR EACH ROW BEGIN
UPDATE table2 ... WHERE id=NEW.id;
UPDATE table3 ... WHERE id=NEW.id;
END
同じ3つのクエリでパフォーマンスは同じですか?つまり、後続のクエリを実行するか、TRIGGER
が実行するかは重要ですか?
APIを使用するとどうなるでしょうか(PHPを介してクエリを実行するなど)。後続のクエリは内部であり、コネクタ/ドライバは必要ありません。 TRIGGER
はパフォーマンスを向上させますか?
追加情報:データベースはinnoDBを備えたmysql 5.5です。
Table1、table2、table3もInnoDBテーブルであると想定しています。
自動コミットのため、すべての挿入/更新がディスクに書き込まれるため(データ/インデックスツリーの更新)、処理が遅くなり、BEGIN TRANSACTIONおよびCOMMITを使用して高速化することはできません。
Table1、table2、table3がInnoDBではなく、MyISAM(テーブルロック)またはメモリ(テーブルロック)である場合、これにより不要なテーブルロック "機能"が発生し、速度が低下します。
編集により、トリガーコードの背後にあるソースコードの非常に小さな部分のみが分析されるため、トリガーの背後にあるソースコードをより徹底的に分析して、パフォーマンスに影響があるかどうか、およびこれが相対的なパフォーマンスに与える影響を確認します持っています。
トリガーを使用しても、実行速度に大きな影響はありません。最終的に、データベースシステムは同じ操作を実行しています。
しかし、すべての挿入が更新を義務付けていると確信している場合、トリガーはデータベースの整合性を確保するための優れた方法なので、必ずそれを行ってください。