临时表和表变量

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

临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#)打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server断开连接时被删除。

局部临时表不能够被其它连接所共享的原因其实是在SQL Server2000中自动为局部临时表的表名后面加上了一个唯一字符来标识.:

CREATETABLE [#DimCustomer_test]

(

[CustomerKey][int]

,[FirstName] [nvarchar](50)

,[MiddleName][nvarchar](50)

,[LastName][nvarchar](50)

)

现在我们来查看一下TempDB sysobjects,我们会发现我们新创建的临时表#DimCustomer_test已经被加上了后缀:

USETempDB

GO

SELECTname FROM sysobjects WHERE name LIKE ’%DimCustomer%’

theResult is:

name

#DimCustomer_test__000000000005

全局临时表

下面我们来看一下全局临时表:

CREATETABLE [##DimCustomer_test]

(

[CustomerKey][int]

,[FirstName] [nvarchar](50)

,[MiddleName][nvarchar](50)

,[LastName][nvarchar](50)

)

现在我们来查看一下TempDB sysobjects,我们会发现我们新创建的临时表##DimCustomer_test没有被加上了后缀:

USETempDB

GO

SELECTname FROM sysobjects WHERE name LIKE ’%DimCustomer%’

TheResult are:

##DimCustomer_test

 

表变量

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

另一个不同的地方是在表连接中使用表变量时,要为此表变量指定别名.

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值