3
我有一個觸發器在桌子上,它基本上是這個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
它運行時,它的刀片(20秒),極爲緩慢。刪除速度很快。玩我嘗試這樣做,而不是:
ALTER TRIGER xx
FOR UPDATE,DELETE,INSERT
AS
DECLARE @tinserted TABLE (id int)
INSERT INTO @tinserted select id from inserted;
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 @tinserted)
GO
通過使用表變量它現在立即運行(1秒以下)。
我不知道爲什麼。是否有任何理由改變爲表變量會產生這樣的差異?