2012-10-30 10 views
7

我一直在讀,SqlDataReaders比SqlDataAdapter快得多,因爲它們的快速轉發,只讀,每行一次連接的性質,並且它們比填充DataTable對象時的SqlDataAdapters特別快SqlDataAdapter.Fill(dataTable中))。如果SqlDataAdapter在內部使用數據讀取器,爲什麼人們會說使用SqlDataReader更快?

但是,在這裏和那裏有人會提到「它可能不會影響你使用的內容,因爲SqlDataAdapter在內部使用數據讀取器來填充它的表。」如果這是真的,那麼適配器如果通過使用內部數據讀取器與數據庫進行通信,速度會如此之慢?

我知道我可以建立一些測試和簡介每個人的表現,但我真的很想爲別人一些線索被指控的性能差異,如果我們基本上是用相同的工藝處理或者辦法。

我知道您通常會使用讀取器來創建強類型POCO列表,這與僅填充表格的數據適配器不同。但是,我的問題是嚴格地關於兩者之間的性能差異的細節,而不是O/RM的問題......

回答

5

如果您使用DataReader,您可以在讀取第一行時甚至忽略一些信息其餘的閱讀。

如果您使用的是DataAdapter,您必須首先加載整個表格,然後然後讀取第一行,以便對相同的信息作出反應。

+0

正式指出,但如果我不必檢查每一行的某些條件呢?換句話說,如果我只是想檢索填充GridView的整個記錄​​子集,該怎麼辦? – bglee

+1

@bglee您將不得不在網站上找到您爲什麼認爲DataReader在任何情況下比DataAdapter *都快的原因*。它們只是訪問數據的不同工具。 DataAdapter是較重的對象,因爲它們可以對數據做更多的事情,比如更新,刪除等等。 – LarsTech

相關問題