Liny_@NotePad

沉迷ACG中

表变量与临时表

最近写一个存储过程,需要一个临时的表,本想用临时表,导师说表变量速度快一些,结果用了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行)可以使用表变量;如果行数很多(有几万行),则使用临时表。

SQL Server安装程序被挂起..

嗯,以前上数据库课程时安装SQL SERVER 2000就经常遇到这个问题,当时都没有做笔记,现在记一下:

打开注册表编辑器,找到目录
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager,删除其中的“PendingFileRenameOperations”,重新安装SQL Server 2000即可。

屡试不爽~