2011-12-13 13 views
3

私はテーブルの上にトリガを持っていることは、インサート(20秒)したときに、それは基本的にこのSQLトリガー性能

ALTER TRIGGER xx 
FOR UPDATE,DELETE,INSERT 
AS 
    DELETE FROM other WHERE id in (SELECT id from deleted) 
    DELETE FROM other WHERE id in (SELECT id from inserted) 
    INSERT INTO other() VALUES() WHERE id in (SELECT id from inserted) 

GO 

だそれは非常に遅い実行されます。削除は高速です。私はこれを代わりにやろうとしました。

テーブル変数を使用することで、すぐに(1秒以下で)実行されます。

私はなぜそう思っています。テーブル変数に変更することでそのような違いが生じる理由はありますか?

答えて

3

INSERT操作でWHERE句が必要な理由がわかりません。

INSERT INTO other(column1, column2, ...) 
    SELECT column1, column2, ... 
     FROM inserted;