SQL Server里的临时表,表变量区别

参考资料:

http://www.cnblogs.com/laodao1/archive/2010/01/07/1641556.html

临时表

临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。

临时表有两种类型:本地和全局。
地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。
全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。
创建方法如下:
CREATE TABLE [#DimCustomer_test]
(
[CustomerKey] [int]
, [FirstName] [nvarchar](50)
,[MiddleName] [nvarchar](50)
,[LastName] [nvarchar](50)
)

表变量
表变量和临时表针对我们使用人员来说并没有什么不同,但是在存储方面来说,他们是不同的,表变量存储在内存中.所以在性能上和临时表相比会更好些!

创建方法如下:
DECLARE @DimCustomer_test TABLE
(
[CustomerKey] [int]
, [FirstName] [nvarchar](50)
,[MiddleName] [nvarchar](50)
,[LastName] [nvarchar](50)
)

基本差别:

表变量在批处理结束时自动被系统删除,所以你不必要像使用临时表表一样显示的对它进行删除。
表变量主要开销系统的内存,而临时表则使用tempdb。(有文章说表变量也会使用tempdb)
对于小数据量的中间数据存储,可以使用表变量,而当需要临时保存的数据量很庞大时,建议使用临时表。
具体使用表变量还是临时表,可以根据系统的运行状况来调整。

其他差异参见:
http://wenku.baidu.com/view/3f9d61d349649b6648d74719.html

posted @ 2012-01-31 10:46  万法自然~  阅读(222)  评论(0)    收藏  举报