2013-04-22 76 views
1

有很多关于临时表与表变量的线程。插入速度临时表vs正常表

但是,我的问题是,什么使临时表比Microsoft SQL Server中的正常表快得多?

如果我插入到临时表中,我的存储过程运行速度提高5倍,然后将数据移出它到正常表中。

最明显的答案是键/索引,但普通表完全没有任何键。

还有什么能让它跑得更快?

感谢

+1

您是否正在将基于集合的INSERT插入临时表或逐行?当你直接进入“真实”表时,同样的问题。 – granadaCoder 2013-04-22 16:07:46

+0

是的,看到存储过程代码可能会产生您目前没有描述的变量。 – 2013-04-22 16:23:33

+0

你好, 这些是逐行插入。 – mrQQ 2013-04-22 17:25:17

回答

4

几种可能性:

  1. 的TempDB可以更快的I/O
  2. 查询可以并行和利用多个tempdb数据文件,如果你已经配置它这样做
  3. TempDB可能有空间插入,而用户数据库必须等待自动增长
  4. 用户数据库可能对日志记录以及simi年龄原因
  5. 用户数据库可能不得不“醒来” - 例如,如果它具有AutoClose设置为ON
+0

嗨, 1.同盘。 2.一个文件。 3.两者都有空间。 4.简单恢复。 5.两者都在AutoClose = OFF – mrQQ 2013-04-22 17:25:42