首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LINQ筛选集合

使用LINQ筛选集合
EN

Stack Overflow用户
提问于 2012-03-23 13:48:42
回答 5查看 3.3K关注 0票数 5

对于使用LINQ过滤集合,我有一个非常普遍的问题。假设您正在数据库表上运行相当复杂的筛选器。它在运行,比如说,10,000次,每次过滤器都可能不同。就性能而言,最好是将整个数据库表集合加载到内存中并使用LINQ执行筛选器,还是应该让数据库使用SQL处理筛选(因为这是构建的)。有什么想法吗?

编辑:,我应该更清楚。假设我们讨论的是一个包含20列的1000条记录的表(包含int/string/date数据)。目前,在我的应用程序中,我每隔1/2小时运行一次查询,将所有数据放入一个集合(将该集合保存在应用程序缓存中),并过滤整个应用程序中缓存的集合。我想知道,这是否比往返数据库服务器(这是Oracle fwiw)更糟糕。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-23 14:25:33

更新后:

它在运行,比如说10,000次

我要假设一张有1000条记录的桌子

假设1k记录可以很容易地放入内存中,这似乎是合理的。

然后运行10k过滤器将大大降低内存(LINQ)。

使用SQL将意味着加载10M记录,大量的I/O。

票数 2
EN

Stack Overflow用户

发布于 2012-03-23 13:51:59

编辑

它的性能取决于您拥有的数据量。如果您有大量的数据,那么请选择sql,如果小于linq。它还取决于从sql服务器调用数据的频率--它比在内存中加载数据和应用linq要频繁得多,但如果不是sql,则更好。

第一答案

最好是在sql方面,而不是在内存中加载,而不是应用linq过滤器。

一个更好的理由是使用sql而不是linq。

如果选择linq,当您获得10,000条记录时,它会在内存中加载并增加网络流量

如果选择,那么内存利用率就会减少,并且减少了网络流量。

票数 2
EN

Stack Overflow用户

发布于 2012-03-23 13:55:17

这取决于您的表的大小以及它存储的数据类型。

就我个人而言,如果您计划在同一个请求中使用所有过滤器,我将返回所有数据。

如果它是一个按需使用ajax的过滤器,您可以每次从数据库重新加载数据(确保数据是最新的)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9840320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档