2014-03-07 133 views
0

我有以下結構需要循環和INSERT到相應的表。但是,我經歷了可怕的長時間來處理查詢,直到服務器關閉連接。 我需要一個更快的方法來處理query.Please advice.thanks 注意到我使用MS SQL Server的插入數據需要很長的查詢時間

foreach (DictionaryEntry myInfo in myOrderInfo){//contain 183 times 

foreach (DictionaryEntry myBi in myInfo.value){//loop 13 times 
...//some code 
cmd2.Parameters.AddWithValue("@" + myBi.Key, myBi.Value + ""); 
.... 
connection2.open() 
cmd2.ExecuteNonQuery(); 
connection2.close(); 

} 
.....//some conditions 

cmd.Parameters.AddWithValue("@" + myInfo.Key, myInfo.Value + ""); 
.....//some conditions 

connection.open(); 
cmd.ExecuteNonQuery(); 
connection.close(); 

} 

回答

1

重用的連接。

將打開和關閉連接方法放在for循環之外。

這會加速很多。

快速編輯:如果要轉到同一個數據庫服務器,則不需要使用兩個連接。像這樣的東西應該是你的最終結果。

 connection.open(); 
     foreach (DictionaryEntry myInfo in myOrderInfo){//contain 183 times 

     foreach (DictionaryEntry myBi in myInfo.value){//loop 13 times 
     ...//some code 
     cmd2.Parameters.AddWithValue("@" + myBi.Key, myBi.Value + ""); 
     .... 
     cmd2.ExecuteNonQuery(); 

     } 
     .....//some conditions 

     cmd.Parameters.AddWithValue("@" + myInfo.Key, myInfo.Value + ""); 
     .....//some conditions 

     cmd.ExecuteNonQuery(); 
     } 
     connection.close(); 
+0

THX,亞歷克斯您的解決方案有顯著改善。 處理需要4分鐘。 讓整個過程比4分鐘更快是否可行? 實際上,上面的查詢只處理了1天的數據,當涉及到實時環境時,它可能需要處理長達7天的數據。 – user3354708

+0

如果它解決了你的問題,你能否接受答案:) – Xela

+0

它比以前好得多,目前租約連接不超時。 我可以查詢多個INSERT並執行一次性操作嗎?它是否改善了處理時間? – user3354708