有什么区别:
CREATE TABLE #temp ( [ID] INT) INSERT INTO #temp SELECT ...
和
DECLARE @temp TABLE ( [ID] INT) INSERT @temp SELECT ...
在sql Server 2008中?
解决方法
临时表格与大多数特性中的普通表格类似,除了进入TempDB而不是当前的数据库,它们在有限的范围之后消失(取决于它们是基于会话还是全局Temp表,但Temp表中数据的所有更改都是记录到事务日志中,具有所需的所有性能影响.otoh,您还可以像普通表一样添加任意数量的索引或视图,触发器或任何您想要的临时表.
表变量是一种快速内存表(它们也使用临时数据库).对它们的更改不会被记录(这样可以提高性能).但是您只能在其上获得一个索引(因为索引不能在初始声明语句之后创建,所以您可以在表变量上创建的唯一索引是可以包含在初始表变量声明中的索引…
Declare @Tab Table (myKey integer Primary Key Not Null,data varchar(20))
由于这些特性,临时表格是较大的表(宽和多行)的更好选择,和/或在其生命周期内将经历多个访问模式,而当您需要非常窄的表格时,表格变量最好(键只表,或键只有一个数据列),这将永远被索引的密钥访问…