存储过程中表变量和临时表的建立【code】,和区别【理论】

个人观点:  
1、表变量缺省放在内存,速度快,所以在触发器,存储过程里如果数据量不大,应该用表变量。  
2、临时表缺省使用硬盘,一般来说速度比较慢,那是不是就不用临时表呢?也不是,在数据量比较大的时候,如果使用表变量,会把内存耗尽,然后使用TEMPDB的空间,这样主要还是使用硬盘空间,但同时把内存基本耗尽,增加了内存调入调出的机会,反而降低速度。这种情况建议先给TEMPDB一次分配合适的空间,然后使用临时表。

 

  1. declare  @tb table(id int identity(1,1not null,name varchar(20))  --声明表变量
  2. declare @RowCount int
  3.     set @RowCount=5
  4.     while @RowCount<>0
  5.         begin 
  6.             insert @tb select @RowCount
  7.             set @RowCount=@RowCount-1
  8.         end
  9. select * from @tb
  10. if object_ID(N'tempdb..#tb'is null     --object_ID 对象标识列
  11.     begin   
  12.         create table #tb(id int identity(11,1not null,name varchar(20))  --创建临时表
  13.         insert #tb select name from @tb
  14.     end
  15. else
  16.     begin
  17.         drop table #tb
  18.     end
  19. select * from #tb
  20. drop table #tb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值