3

我有兩種類型的一些計算柱:計算列:SQL或本地實體框架?

    基於在當前表格(即價格*含稅)
  1. 基於其他columnes計算列(即價格* fn_GetTax(的OrderId))列
  2. 計算列

您是否認爲最好在客戶端的CLR中使用這些列,然後從服務器保存計算和傳輸性能? 它在上面列出的類型(和其他類型)中有所不同嗎?

回答

4

我會盡量讓計算列成爲你的SQL表的一部分 - 如果需要這樣做的努力並不離譜。

如果您有相當簡單的計算或查找,或者這些行中的內容 - 直接將它們放入SQL表中。這樣,即使您需要使用T-SQL或其他訪問SQL Server數據庫的工具查詢表,它們也可用,並且它們很可能會快得多(尤其是如果您可以使它們變爲PERSISTED) 。

如果您有更詳盡的要求,如果您需要大量的字符串,數學或日期操作等,您最好將這些計算放入.NET語言中。您可以將它作爲CLR程序集存儲在SQL Server中,並且仍然直接在SQL Server中執行列(如果可能由其他團隊或項目重用),或者如果您可能將其放入EF模型中唯一對這些計算列感興趣的人。

希望能夠對您的問題提供一些啓示!

+0

謝謝你解釋得很好的答案。 – Shimmy 2009-12-14 12:47:52

+0

在這種情況下,請小心SET QUOTED_IDENTIFIER ON。如果您使用這些計算列並且沒有將該值設置爲ON,則您的應用程序可能會開始拋出異常。您可能希望在觸發器中實施相同的邏輯來更新同名的列,以節省您的頭髮拉動。 – sm14 2015-06-16 15:23:01