临时表 表变量 游标

表变量和临时表的比较:

  • 临时表是利用了硬盘(tempdb数据库) ,表名变量是占用内存,因此小数据量当然是内存中的表变量更快。当大数据量时,就不能用表变量了,太耗内存了。大数据量时适合用临时表。 
  • 表变量有明确的作用域,在定义表变量的函数、存储过程或批处理结束时,会自动清除表变量。 
  • 在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。 
  • 表变量需要事先知道表结构,普通临时表,只在当前会话中可用与表变量相同into一下就可以了,方便;全局临时表:可在多个会话中使用存在于temp中需显示的drop。(不知道表结构情况下临时表方便一些) 
  • 全局临时表的功能是表变量没法达到的。 
  • 在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create table,避免log,提高速度;如果数据量不大,为了缓和系统表的资源,建议先create table,然后insert。 
  • 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定。 

 游标和临时表的比较:

  • 游标一般是每次取出一条记录然后操作,按照你的规则,一般是从第一条直到最后一条,一次对一条记录操作。
  • 临时表一般有些数据不能一次算出来,需要暂时放个地方,用完后就可以删除的记录,一般是批处理。

http://blog.csdn.net/hebeijg/article/details/9817573

http://www.cnblogs.com/Mainz/archive/2008/12/20/1358897.html

http://www.cnblogs.com/Blogzhangli1989/archive/2013/01/15/2860853.html

Stay hungry, stay foolish
原文地址:https://www.cnblogs.com/xiao-hei/p/3874384.html