較小的臨時計算用數(shù)據(jù)集我們常常推薦使用表變量。如果數(shù)據(jù)集比較大,如果在代碼中用于臨時計算,同時這種臨時使用永遠(yuǎn)都是簡單的全數(shù)據(jù)集掃描而不需要考慮什么優(yōu)化,比如說沒有分組或分組很少的聚合(比如說COUNT、SUM、AVERAGE、MAX等),當(dāng)然也可以考慮使用表變量。使用表變量另外一個考慮因素是應(yīng)用環(huán)境的內(nèi)存壓力,如果代碼的運(yùn)行實(shí)例很多,就要特別注意內(nèi)存變量對內(nèi)存的消耗。
一般對于大的數(shù)據(jù)集我們推薦使用臨時表,同時創(chuàng)建索引,或者通過SQL Server的統(tǒng)計數(shù)據(jù)(Statisitcs)自動創(chuàng)建和維護(hù)功能來提供訪問SQL語句的優(yōu)化。如果需要在多個用戶會話間交換數(shù)據(jù),當(dāng)然臨時表就是的選擇了。需要提及的是,由于臨時表存放在tempdb中,因此要注意tempdb的調(diào)優(yōu)。