【问题标题】:Insert speed Temporary Table vs Normal table插入速度临时表与普通表
【发布时间】:2013-04-15 14:18:58
【问题描述】:

关于临时表与表变量的话题很多。

但是,我的问题是,是什么让临时表比 Microsoft SQL Server 中的普通表快得多?

如果我插入到临时表中,我的存储过程的运行速度是原来的 5 倍,然后将数据从临时表中移出到普通表中。

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

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

谢谢

【问题讨论】:

  • 您是在执行基于集合的 INSERT 到临时表还是 Row by Row?当您直接进入“真实”表时,同样的问题。
  • 是的,查看存储过程代码可能会产生您当前未描述的变量。
  • 你好,这些是逐行插入。

标签: sql-server temp-tables sql-insert


【解决方案1】:

几种可能性:

  1. TempDB 的 I/O 速度可能更快
  2. 查询可以是并行的,并且可以利用多个 tempdb 数据文件(如果您已将其配置为这样做)
  3. TempDB 可能有空间用于插入,而用户数据库必须等待自动增长
  4. 出于类似原因,用户数据库也可能会限制日志记录
  5. 用户数据库可能必须“唤醒” - 例如。如果它的 AutoClose 设置为 ON

【讨论】:

  • 嗨,1. 同一个磁盘。 2. 一个文件。 3. 两者都有空间。 4. 两者都简单恢复。 5. 两者都处于 AutoClose = OFF
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2012-08-19
  • 2018-11-20
相关资源
最近更新 更多