Liny_@NotePad

沉迷ACG中

表变量与临时表

YOYO posted @ 2010年10月19日 17:36 in 【数据库】 with tags sql server , 2842 阅读

最近写一个存储过程,需要一个临时的表,本想用临时表,导师说表变量速度快一些,结果用了50秒,数据量大概是百万级,后面同事换成临时表,变成20秒 - -! 在创建了SQL Server优化器建议的索引后不到1秒就跑完了 Orz。

那么什么时候该用表变量,什么时候用临时表呢?

直接转不大好,贴个网址,个人觉得总结得不错:http://topic.csdn.net/u/20100610/22/fc438413-8472-40fb-b301-39ae0b8c36c4.html

其实如其所说,直接两个都试一下就知道了 = =。
非要规律的话,按照以下应该差不多……

要使用表变量应该根据如下规则来判断:

  1. 表的行数;

  2. 使用表变量能够减少的重新编译次数;

  3. 查询的类型和对索引或者统计信息的依赖程度;

  4. 需要生用UDF,UDDT,XML的时候。

其实也就说,得从实际出发,根据具体的查询,作出具体的选择。但是,其中很关键的一点,如果表的行数非常多,使用表变量其实是更费资源的。有人提出了这样的建议:对于行数较少的情况下(小于1000行)可以使用表变量;如果行数很多(有几万行),则使用临时表。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter