2009-11-04 64 views
2

你好,我正在創建一個Windows應用程序,將安裝在10臺將通過實體框架訪問相同數據庫的計算機上。許多連接與大數據查詢

我想知道什麼是更好:

  1. 傳播查詢到的數據包(即負載觸點,然後安裝附帶的導航屬性 - [DataContext.Contacts.Include(「電話」])
  2. 負載一切在一個查詢而不是分裂它在單個查詢。
  3. 你的名字。

BTW我有它的蹤影根弦超過500行的SQL查詢,即時通訊懷疑,也許我應該放棄用戶表現,因爲性能也是u.e.的一部分。

+2

500行的SQL可能相當快。 – 2009-11-04 14:01:29

回答

1

在一個查詢中加載所有內容而不是 ,然後將其拆分爲單個的 查詢。

這通常會優越。你通常會寫更多的查詢而不是聊天。更少的通話開銷少 - 您需要獲得更少的連接,處理更少的延遲等。

數據庫服務器是否必須支持其他應用程序?對於大多數商業軟件應用程序來說,SQL服務器甚至不會爲10個客戶端服務 - 特別是執行基本實體查找。除非它安裝在486SX上,否則它甚至不會知道你在那裏。

2

您可以將SQL存儲在存儲過程中,並編寫您的實體框架邏輯來使用這些過程,而不是通過生成SQL並通過網絡發送它。

+0

好主意。但是後綴,我應該避免大的查詢或更好的查詢超過20個單獨的連接嗎? – Shimmy 2009-11-04 14:02:22

+1

一個大問題很好,在很多情況下可能是你想要的一般情況。但是,如果您確實使用存儲過程,那麼您將可以選擇使用0或多個子進程的父進程,這樣可以讓您組織或將大查詢分解爲更小的邏輯塊,如果這樣做有意義。所以你的.net邏輯將調用父進程,但父進程可能調用0或許多子進程來爲你提供所需的數據。 – Kuberchaun 2009-11-04 14:14:06

2

與所有數據庫相關,這取決於。像連接類型(局域網和廣域網),你如何處理緩存,數據庫負載水平,數據庫負載類型(寫入vs讀取)等等都可以有所作爲。

但是總的來說,只要你可以減少往返數據庫的次數,這是件好事。請記住:執行單個SqlCommand後可以有多個結果集。

+0

它將安裝在客戶端和服務器的10g LAN網絡中。 – Shimmy 2009-11-04 16:41:42