2016-07-04 57 views
1

我有一个数据库程序,包含有关包含百万条记录的人的信息。LINQ或SQL查询。什么更有效率?

的任务之一是通过出生日期来过滤结果,然后通过城市群 他们终于比较每个城市与 给定数字的人口。

我开始写SQL查询的一切,但后来我开始怀疑,这可能使服务器太忙,也许这是更好地做一些计算与应用程序本身。

我想知道是否有任何规则/建议

  • 时使用的服务器进行计算?
  • 何时在应用程序中使用LINQ等工具?
+0

加载所有到您的应用程序可能要花很多的记忆。并且全部加载到您的应用程序中也会占用您的服务器。 –

+0

@juergend:然而,在数据库中进行一些处理以及在程序的其余部分进行一些处理也很常见,例如在数据库端过滤数据,然后在代码中进行一些复杂的转换。 –

+1

这个特定的情况听起来并不复杂。我会尝试先在SQL中编写它,然后看它如何执行以及查询计划的外观。 –

回答

0

对于这样的要求,也没有固定的规则或策略,它是由应用/业务需求的驱动,一些建议,可以帮助:

  • 通常的SQL查询做了很好的工作在翻腾地段的数据在过滤/分组/排序后提供更小的结果集。但它需要
    正确的表设计,索引优化。随着数据量的增加SQL可能在通过网络执行

  • 传输数据,从托管的数据库应用程序是什么杀死了性能,因为网络可以是大的瓶颈,尤其是如果数据超过一定规模

  • 在内存处理使用Linq2Objects可以非常快的重复调用,这就需要应用过滤器,对数据进行排序,并做一些更多的处理

  • 如果UI是一个丰富的客户端,那么你能负担得起带来大量的数据中内存,并继续使用Linq进行工作,它可以是内存数据结构的一部分,如果UI是Web,那么你可以d来缓存数据

  • 对于与sql相同的操作,对于内存数据,对于多种类型,您需要自定义代码,最好使用表达式树和linq,否则简单的linq将为已知固定式

我有一个类似的设计在我的Web应用程序之一,通常它是一个组合,效果最好最实际的方案