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