使用多結果集讀取資料減少伺服器往返,提高效能

2021-09-05 19:23:00 字數 1379 閱讀 4969

先來談一下什麼是多結果集?以及為什麼需要它?

假設我們的乙個窗體上有多個控制項,需要繫結多個資料來源。那麼傳統情況下,我們可以用不同的命令去讀取不同的資料,然後分別繫結。這樣做本來無可厚非,但如果從效能上考慮的話,就有改進的必要了。

因為每個單獨的命令執行都是需要發生一次伺服器的往返的,所以如果能夠把資料一次性讀取到,統一發給使用者程式,再在客戶端做單獨的繫結,這樣的設計可以減少伺服器往返次數,提高效能。

以下是一些**和比較

使用datareader執行單結果集查詢:每次返回乙個結果集。(這是傳統的方式)

using (sqlconnection conn = new sqlconnection(system.configuration.configurationmanager.connectionstrings["northwind"].connectionstring))

很顯然,這樣的話,就會發生兩次的伺服器往返。(兩次批處理的過程)

使用datareader做多結果集查詢:一次性讀取兩個**的資料

需要特別注意的是,因為datareader是乙個只向前,唯讀的游標集。所以如果它的結果集有超過乙個,需要通過nextresult方法進行移動。同時,還需要啟用mars:多活動結果集 的支援。

如果換成是dataset的方式,就無需這麼麻煩,因為dataset天生就是支援多個**,在用dataadatper的fill方法填充資料的時候,它會自動地建立多個**在dataset裡面。

使用多結果集讀取資料減少伺服器往返,提高效能

先來談一下什麼是多結果集?以及為什麼需要它?假設我們的乙個窗體上有多個控制項,需要繫結多個資料來源。那麼傳統情況下,我們可以用不同的命令去讀取不同的資料,然後分別繫結。這樣做本來無可厚非,但如果從效能上考慮的話,就有改進的必要了。因為每個單獨的命令執行都是需要發生一次伺服器的往返的,所以如果能夠把資...

Matlab讀取伺服器資料

matlab的工具箱中提供了bloomberg和yahoo等資料介面,用於提取上市公司的 資料,其實這些介面都是通過http協議通訊的,並且yahoo的介面是直接從yahoo門戶 提取的,只是需要在matlab端對htm進行解析。其核心主要是使用了matlabd的urlread函式,那麼通過該函式我...

Matlab讀取伺服器資料

matlab的工具箱中提供了bloomberg和yahoo等資料介面,用於提取上市公司的 資料,其實這些介面都是通過http協議通訊的,並且yahoo的介面是直接從yahoo門戶 提取的,只是需要在matlab端對htm進行解析。其核心主要是使用了matlabd的urlread函式,那麼通過該函式我...