2012-03-25 30 views
0

我正在創建一個應用程序,它將使用C#從文本文件運行查詢。查詢在應用程序中運行一個非常長的查詢

一行看起來像:

update table1 set value1 = (select valueA from table2 where valueB = 'someValue') 
set ... 
where value2 = 'anotherValue' 

Set語句是17每上看起來就像上面的一個個都在同一個更新語句。

讀取文件花費的時間太長,程序沒有響應。我甚至試圖在SSMS中執行查詢 - 它不起作用。

編輯:我有超過70000的更新聲明。

而我需要C#中的解決方案而不是SQL。

我正在使用Visual Studio 2010 Express和SQL Server 2008 Express。

+0

從SQL Server Management Studio中獲取查詢計劃(按「顯示預計執行計劃」幾個按鈕到「執行」按鈕的右側)並在此處發佈執行計劃。 – 2012-03-25 17:48:55

+0

問題:您有17個更新要依次在數據庫上執行。你想讓你的應用在這個過程中出現「活着」嗎?您是否嘗試在單獨的線程中移動該代碼?你的應用程序可能會繼續工作(或者至少用戶可能會用一個很好的進度條以某種方式進行交互)。 – 2012-03-25 17:50:22

+0

table1和table2有關係嗎? table1是由value2索引的,而table2是由valueB索引的?你提到這個查詢在SSMS中不起作用 - 它是否花了太長時間或者是否有錯誤? – 2012-03-25 18:05:58

回答

0

如果您的索引和查詢計劃一切正常, 您是否嘗試了一些表提示(使用...)來檢查這是否來自鎖定問題?

update table1 set value1 = (select valueA from table2 with (nolock) where valueB = 'someValue') 
set ... 
where value2 = 'anotherValue' 

注意,如果你不知道什麼是由查詢完成後,運行這種表提示可以在你的數據庫/更新結果引入一些不一致性。

相關問題