SQLSERVER中临时表和表变量的最大区别

SQLSERVER中临时表和表变量的最大区别

不知道大家有没有注意到,SQLSERVER里有两种对象可以暂时存放表结构的数据

一种就是大家很熟悉的  临时表(temp table)


另一种是名气小一点,是  表变量(table variable)

 

这两种对象功能类似,差异不太明显。

功能上比较大的差别是:表变量可以作为存储过程的返回参数,而临时表不行

那是不是用表变量就可以了,为什麽SQLSERVER还要保留临时表这个功能呢?其实这两个对象在内部实现上还是有很大区别的。

 

最显著的区别:SQLSERVER会像对普通表一样,在临时表上维护统计信息,用户也可以在上面建立索引。

而表变量上,既不能建立索引,也不会有统计信息。

SQLSERVER在做执行计划的时候,总是认为表变量里的数据量只有很少的几行

 

posted @ 2013-02-11 21:08  桦仔  阅读(786)  评论(2编辑  收藏  举报