SQLServer表变量和临时表的区别

SQLServer表变量和临时表创建时都存储在内存中,直到他们的size达到指定大小后才会被保存到disk。

他们的区别如下(补充中):

1. 临时表有统计,表变量没有统计;

2. 临时表有可能引起recompile(多数场合是因为Schema Changed或者Statistics Changed),表变量不会引起基于统计变更的recompile;

3. 表变量有它自己的作用域(例如在SP中声明的表变量,无法被该SP嵌套调用的子SP使用,而临时表可以);

4. 表变量不受transaction rollbacks的影响,所有对表变量的操作都会在独立的transaction中立即commit;

5. 无法对表变量创建index除非对它指定constraints (primary key and unique key),DDL无法应用到表变量,而临时表可以创建non key index;

6. 编译时对表变量的行数估算总是0或1;

综上:临时表适用于数据量较大的场合,表变量适用于数据量较小的场合。

参照:http://blogs.msdn.com/b/sqlprogrammability/archive/2007/01/18/11-0-temporary-tables-table-variables-and-recompiles.aspx

转载于:https://www.cnblogs.com/royliugc/archive/2012/10/23/2735261.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值