我一直有與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