SQLSERVER中临时表和表变量的最大区别
SQLSERVER中临时表和表变量的最大区别
不知道大家有没有注意到,SQLSERVER里有两种对象可以暂时存放表结构的数据
一种就是大家很熟悉的 临时表(temp table)
另一种是名气小一点,是 表变量(table variable)
这两种对象功能类似,差异不太明显。
功能上比较大的差别是:表变量可以作为存储过程的返回参数,而临时表不行
那是不是用表变量就可以了,为什麽SQLSERVER还要保留临时表这个功能呢?其实这两个对象在内部实现上还是有很大区别的。
最显著的区别:SQLSERVER会像对普通表一样,在临时表上维护统计信息,用户也可以在上面建立索引。
而表变量上,既不能建立索引,也不会有统计信息。
SQLSERVER在做执行计划的时候,总是认为表变量里的数据量只有很少的几行