2011-05-11 118 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

相關問題