2011-01-26 73 views
2

嘿那裏 - 這是通用於任何調用SQL服務器的操作,或任何需要打開連接的操作。保持Sql連接打開迭代許多請求?或關閉每一步?

假設我有20到1000之間的任何地方選擇要爲數據中的每個項目循環播放的呼叫。對於每一步,我將從sql中選擇,將數據本地存儲在結構中,然後繼續。這不是一個非常昂貴的調用,所以我應該保持整個循環的連接打開?或者我應該打開並關閉每一步?

運行時開啓連接有多昂貴?我認爲最好保持連接暢通,但希望得到正確的迴應。

謝謝。

+2

發佈查詢,查詢可能會更改爲只運行一次(因爲SQL基於SET而非過程化)。 – 2011-01-26 05:53:52

回答

2

有多貴在運行時打開

此只考慮CPU速度和沒有按」連接考慮帶寬。

保持開放連接可以節省CPU,但會阻止其他請求使用該連接。所以它是一種折衷。很難說什麼「正確的迴應」是不知道更多,但在任何情況下,似乎是一個是tinkering with tolerances instead of nailing the nominals

這就是說,我通常開始保持連接打開一個單位的SQL工作然後關閉它。

雖然一兩件事,的確顯得有點粗略就是這條線

20至1000,選擇通話,使對數據的每個項目進行循環。

嘗試並做更多基於集合的操作。

1

不只是這個循環,你應該保持連接打開整個請求。這是很好的做法在開始時打開連接只有一次,密切一次(在最後)

0

你應該改變你的查詢(在這種情況下可能加入其他表格)以包含其他表格。嘗試在一次數據庫調用中獲取所有數據。

這是需要很多時間才能查詢的1000個數字。

使用ADO.NET的MSSQL中的連接被緩存,所以它不像當關閉連接時,實際的TCP/IP管道與數據庫實際上是關閉的。所以關閉和開放並不需要時間。但不管你在做什麼,當你做了1000次的時候,它都會加起來。

在一次數據庫調用中獲取所有數據,關閉連接,然後執行您的C#代碼。我嘗試並遵循的是每個請求 - 響應循環的一次數據庫調用。

相關問題