用户操作
[即时聊天] [发私信] [加为好友]
蔡一平ID:cyp207
156670次访问,排名518,好友0人,关注者16人。
cyp207的文章
原创 22 篇
翻译 0 篇
转载 465 篇
评论 42 篇
cyp207的公告
声援SOFF|声援珊瑚虫:如果你是珊瑚虫用户,请坚决力挺声援珊瑚虫! 网上调查兼职网站,填写问卷即可赚钱
国外的一家调查网
中智库玛调查网
亚太和中东地区最大的在线调查答卷者社区之一
爱乐答意见网
第一调查网
益派调查网
中文调查网
5i调查网
任务交易兼职网站
任务中国
最近评论
モテ度審査員:童貞セフレナンパ
交際促進部:エッチ巨乳熟女
激ウマ求人情報:オナニー出会いエロ
人事課:エロSEX風俗
倶楽部オーナー:おっぱいセフレ出会い考察
文章分类
收藏
    相册
    游戏
    梦幻模拟战2PC版网站
    泰坦之旅中文网
    英雄无敌资料网站
    综合
    C语法
    psytopic心理测试
    SUN的JAVA代码规范
    WEB2.0
    中国协议分析网
    中文全文检索网
    技术出身,如何做好项目经理
    有用的
    闫辉的日志
    面试题集锦
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 表变量与临时表的优缺点?收藏

    新一篇: sql server2000还原模型的说明 | 旧一篇: 在Oracle 数据库中的临时表用法汇总

    什么情况下使用表变量? 
    什么情况下临时表? 
    --------------------------------------------------------------- 
     
    表变量只存放在内存中,临时表需要写磁盘。所以一般情况下,用表变量会快些。 
     
    用法不太一样,有些时候用表变量更方便。 
     
    具体的再看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.数据量太大应该用临时表。
    --------------------------------------------------------------- 

    另外SQL SERVER 2000帮助中对表变量的注释如下

     

    可将函数和变量声明为 table 类型。table 变量可用于函数、存储过程和批处理中。

    尽可能使用表变量而不使用临时表。table 变量有以下优点:

    • table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。

      在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:

      INSERT INTO table_variable EXEC 存储过程。

      SELECT select_list INTO table_variable 语句。

      在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。

    • 在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。

    • 涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。

    不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。

    发表于 @ 2007年08月17日 14:59:00|评论(loading...)|编辑

    新一篇: sql server2000还原模型的说明 | 旧一篇: 在Oracle 数据库中的临时表用法汇总

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © cyp207