2011-05-11 66 views
3

从select语句将行插入表中并插入到表中的更快方法?从另一个表中插入数以百万计的行

Insert into PartyMain 
Select [PermID] 
     ,[IsOptOut] 
     ,[UpdatedOn] 
     ,[FK_DataSource] 
From PartyMain 

用6M行经由选择服用>4分钟

+0

对于600万行大约4分钟也不算太坏......大约在附近。每秒20,000个。你期待它需要多久?您的I/O子系统的最大理论吞吐量是多少? – 2011-05-11 00:42:45

+0

这是每秒25,000次插入,你确定它很慢吗?可能这里重要的是数据库的调整参数,比如它分配盘区的方式,建立索引,加载因子等。 – entonio 2011-05-11 00:43:54

+0

我同意米奇这听起来不错。不妨看看这是否真的有必要。你试图达到什么目标? – 2011-05-11 00:44:49

回答

1

插入件是我能想到的插入数据的最快方式。但是,您可能可以在应用程序工作流程中进行改进。

我想在应用程序启动过程中有某种按钮。而不是在用户告诉应用程序(我正在做这个假设)时进行插入操作,您是否可以有一个每隔X秒执行一次传输的进程?或者每隔X秒检查一次,如果要传输的行数大于Y,则运行传输......换句话说,不要等到有600万行。

编辑 - 另一个选项可能是database triggers

0

PartyMain上有任何索引吗?如果是的话,你可能要

  1. 删除索引
  2. 插入行
  3. 重新创建索引

可能会提高性能。

另外 - 你确定你从PartyMain读取并插入PartyMain?

+0

好主意!我会试着看看是否有任何改进。 – 2011-05-11 16:05:06

+0

@Marty - 太棒了!我期待着看到这是否适合你。 – YetAnotherUser 2011-05-11 16:24:26