2010-03-29 94 views
3

在Dynamics CRM 4平臺的速度和可訪問數據的可維護性(只讀)方面,最佳方式是什麼?我已經完成了所有三項,但對觀衆的意見感興趣。如何訪問Dynamics CRM中的數據?

  • 通過API
  • 通過web服務直接
  • 通過DB調用意見

...爲什麼?

我的想法通常以數據庫調用爲中心,但我知道那裏有純粹主義者。

回答

2

鑑於這兩個要求,我會說你想調用的意見。正確製作的SQL查詢將會飛行。

如果您計劃修改數據,則需要經過API,但由於它不允許深度加載實體,因此它不是最快的方法。例如,如果您想查看客戶和他們的訂單,則必須單獨加載,然後手動加入。作爲SQL查詢的位置已經加入了數據。

不要以爲TDS流比API服務使用的SOAP消息更有效。

UPDATE

我應該考慮到一般的觀點和CRM數據庫中指出:CRM不優化的表或視圖的自定義實體的指標(怎麼可能呢?)。因此,如果您有一個卡車實體,您隨時都可以通過目的地查找,則需要爲該屬性添加索引。根據您的應用程序,它可能會在性能上產生巨大差異。

1

我會添加到傑克的評論說,直接查詢表而不是視圖(*基地& *擴展基地)會更快。

在速度的順序排列它會是:

  1. 直接表查詢
  2. 視圖查詢
  3. filterd視圖查詢
  4. API調用
+0

小心直接對着桌子。這些視圖強制執行不會直接發送到表的安全性。此外,直接對錶進行更新是一個超級糟糕的主意。所有更新都必須經過API。 Sucksville如果你有很多數據,但不這樣做可能會有不可預測的結果。 – Jake 2010-03-30 14:57:39

+0

我永遠不會建議做任何直接更新或通過表或視圖插入。但是,對於大規模應用程序(數百個用戶和數百萬行),api只是不會爲了查詢目的而削減它。如果您需要強制實施安全角色,那麼您必須遵守API或過濾視圖。提取大量數據時,這兩者都比較慢。 – XVargas 2010-03-30 15:34:13

0

直接表更新:

我不同意Jake所有更新都必須通過API。正確的說法是通過API是唯一的支持方式來做更新。實際上有幾種情況直接修改表是最合理的選擇:

- 在系統未運行時一次性導入大量數據。

- 對大量數據進行特定字段的修改。

我同意這種直接修改應該只是API性能不可接受時的最後手段。但是,如果您想修改數千條記錄的布爾型字段,那麼對錶進行直接SQL更新是一個不錯的選擇。

相對速度 只要相對速度,我同意XVargas。

未經過濾的視圖vs表:我還沒有發現性能優勢值得手工加入基本表和擴展表的麻煩。

未經過濾的視圖vs已過濾的視圖:我最近正在處理一個複雜的查詢,它使用過濾的視圖運行了大約15分鐘。切換到未過濾的視圖後,此查詢在大約10秒鐘內運行。查看各自的查詢計劃,原始查詢有8個操作,而針對過濾視圖的查詢則有80多個操作。我從來沒有通過API與查詢視圖進行比較,但我比較了通過API編寫數據和直接通過SQL插入的成本。通過API導入數百萬條記錄可能需要幾天時間,而使用插入語句的相同操作可能需要幾分鐘的時間。我認爲讀取期間的差異並不大,但它可能仍然很大。