簡體   English   中英

更好地查詢數據庫或將表數據加載到CLR程序集中的對象中?

[英]Better to query DB or to load table-data into object in CLR assembly?

我正在通過CLR程序集將平面文件導入數據庫。
對於平面文件中的每一行,程序集都會進行一些質量檢查。 我注意到,將數據庫表存儲在DataTables中並查詢這些DataTables比直接查詢DB慢得多。 另一方面,HashSet看起來和查詢數據庫一樣快。

此刻,我的代碼有時會將數據加載到HashSet中,並為每一行查詢HashSet,而在其他時候,它會分別針對每一行檢查數據庫。 例如,當我檢查源行中的鍵在數據庫中是否存在約10000個源行和約1000個可能的正確鍵時。
HashSet
+我只查詢數據庫一次,程序集可以在HashSet上執行其檢查。
-為什么要復制數據庫中已經存在的內容?
查詢數據庫
+ DB擁有表的結構,並針對此類查詢進行了優化。
-我必須管理數據庫連接,這可能包括多次打開/關閉數據庫連接。

我想使我的代碼標准化,並且需要幫助來決定使用哪個選項? 我覺得我的表現沒有差異。 如果從CLR程序集打開數據庫連接不是問題,那么我寧願查詢數據庫,因為我可以將SQL代碼寫入CLR程序集並執行它,而不必編寫多個對象。

是否有技術上的理由要使用另一個?
編碼風格的推薦?

注意 :我正在處理靜態數據,因此無需在導入程序集運行時擔心數據更改。

也許是一個相關的問題。

我將投票給HashSet 由於DB與HashSet沒有顯着差異。 一旦在系統中擁有了所有東西,您就不必擔心數據庫調用連接等等。

-為什么要復制數據庫中已經存在的內容?

這種復制將使您免於一次又一次地訪問數據庫,您可以在系統中處理數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM