计算列:SQL或本地框架中的本地?

时间:2009-12-14 03:33:24

标签: sql-server-2005 entity-framework performance calculated-columns

我有两种类型的计算列:

  1. 基于当前表中列的计算列(即Price * Tax)
  2. 基于其他列的计算列(即Price * fn_GetTax(OrderId))
  3. 您是否认为最好在客户端的CLR中使用这些列,然后从服务器保存计算和传输性能? 它是否在上面列出的类型(和其他类型)中有所不同?

1 个答案:

答案 0 :(得分:4)

我会尝试将计算列作为SQL表的一部分 - 如果这样做的努力并不令人愤慨。

如果你有相当简单的计算,或查找,或沿着这些行的东西 - 直接将它们放在SQL表中。这样,即使您需要使用T-SQL或访问SQL Server数据库的其他工具查询表,它们也可用,并且它们很可能更快(特别是如果您可以使它们成为PERSISTED)

如果您有更复杂的要求,如果您需要大量的字符串,数学或日期操作等,那么您最好将这些计算放入.NET语言中。您可以将其作为CLR程序集存储在SQL Server中,并且仍然可以直接在SQL Server中执行这些列(如果可能由其他团队或项目重用),或者如果您可能是那么可以将它们放入EF模型中唯一对这些计算列感兴趣的人。

希望能够对你的问题有所了解!