- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的服务器维护,企业网站维护,网站维护服务
- (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
 
  
    
| 作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 | 
什么情况下使用表变量? 
什么情况下使用临时表? 
--------------------------------------------------------------- 
表变量只存放在内存中,临时表需要写磁盘。所以一般情况下,用表变量会快些。
用法不太一样,有些时候用表变量更方便。
具体的再看SQL 2000的帮助。试用下就知道了。 
--------------------------------------------------------------- 
个人观点: 
1、表变量缺省放在内存,速度快,所以在触发器,存储过程里如果数据量不大,应该用表变量。 
2、临时表缺省使用硬盘,一般来说速度比较慢,那是不是就不用临时表呢?也不是,在数据量比较大的时候,如果使用表变量,会把内存耗尽,然后使用TEMPDB的空间,这样主要还是使用硬盘空间,但同时把内存基本耗尽,增加了内存调入调出的机会,反而降低速度。这种情况建议先给TEMPDB一次分配合适的空间,然后使用临时表。 
---------------------------------------------------------------
肤浅理解: 
表变量:需要事先知道表结构 
普通临时表:只在当前会话中可用与表变量相同 into一下就可以了,方便 
全局临时表:可在多个会话中使用存在于temp中需显示的drop 
--------------------------------------------------------------- 
要从表变量的作用域,支持不支持的操作,机器内存大小等几方面考虑。 
如: 
.表变量相当于ADO的RECORDSET,速度比临时表快得多。 
表变量不能用在下列语句中: 
INSERT INTO table_variable EXEC 存储过程。 
SELECT select_list INTO table_variable 语句。 
在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。 
但临时表支持。 
.表变量速度比临时表快得多(如果内存足够) 
如果数据量不大: 
微软 BOOK ON LINE 内说:尽可能使用表变量而不使用临时表 
--------------------------------------------------------------- 
贴出来看看:
尽可能使用表变量而不使用临时表。table 变量有以下优点:
table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。 
在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中: 
INSERT INTO table_variable EXEC 存储过程。
SELECT select_list INTO table_variable 语句。
在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。
在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。
涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。 
不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。 
---------------------------------------------------------------
1.表变量在内存中,临时表存放在硬盘上; 
2.用临时表要考虑锁不锁表的问题; 
3.数据量太大应该用临时表。 
| 我要申请本站:N点 | 黑客防线官网 | | 
| 专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |