我有一个程序,其中包含包含数百万条记录的人的信息。
我开始其中一项任务是按出生日期过滤结果,然后分组 他们按城市,最后将每个城市的人口与 给定的数字。
用SQL查询编写所有内容,但后来我开始怀疑,这可能会使服务器太忙,也许最好使用应用程序本身进行一些计算。
我想知道是否有任何规则/建议
- 何时使用服务器进行计算?
- 何时在应用程序中使用 LINQ 等工具?
对于这样的需求,没有固定的规则或策略,它是由应用程序/业务需求驱动的,一些建议可能会有所帮助:
-
通常,Sql Query 在搅动大量数据以在过滤/分组/排序后提供较小的结果集方面做得很好。然而它需要
正确的表设计,索引优化。随着数据大小的增加,Sql 的性能可能会不足 -
通过网络将数据从托管数据库传输到应用程序会扼杀性能,因为网络可能是很大的瓶颈,尤其是在数据超出特定大小的情况下
-
在内存处理中使用 Linq2Object 对于重复调用可能非常快,这需要应用过滤器、对数据进行排序并执行更多处理
-
如果 UI 是富客户端,那么您可以负担得起在内存中引入大量数据并使用 Linq 继续处理它,它可以成为内存数据结构的一部分,如果 UI 是 Web,那么您需要缓存数据
对于 与sql相同的操作,对于内存数据,对于多种类型,您需要自定义代码,最好使用表达式树和linq,否则简单的linq可以对已知的固定类型执行
。
我在我的一个 Web 应用程序中有一个类似的设计,通常它是一个组合,在大多数实际场景中效果最好