我一直有与SQL触发器性能问题。该问题涉及在使用INSERTED触发器表的select语句时执行SQL查询。优化问题:复制触发插入或删除行到表变量
SELECT x FROM y WHERE x IN (SELECT x FROM INSERTED)
查询执行计划指向(SELECT x FROM INSERTED)
花费比预期的要长。我们在这里谈论x1000s行。
如果我创建一个表变量,而我选择从插入到表变量中的行,然后用它的速度要快得多的“IN”子句中的表变量。
我的问题是,为什么是这样快?我已经知道它可能是什么。我读过INSERTED表是一个虚拟表,它来自事务日志,因此比使用表变量花费的时间要长得多。但是,我认为将INSERTED表中的行选入表变量将会否定在'IN'子句中使用表变量的积极效果。
任何想法,为什么这是更快?
对此深感抱歉,我会记住下一次! – jaffa 2010-11-14 15:37:17