【发布时间】:2017-02-03 09:44:40
【问题描述】:
最近我对 Linq 有点头疼。 我有一张大表(超过 100 个字段,用于测试目的超过 40000 行),我们称之为 Products。
Products 表有大约 60 个查询 - 我必须在 Grid 上显示 - 查询是 IQueryable 对象,我正在对每个查询执行 Count()。
每个查询大约需要 100 毫秒(所有查询大约需要 7 秒),因此向用户显示结果需要大量时间。 我应该使用 StoredProcedure,还是有其他解决方案?
最好的问候
编辑: 我的一个查询: var result = (来自 this.Context.Products 中的 f 其中 f.Period == currPeriod && (f.TYPE == 1 || f.TYPE == 2) && f.FLAGA > 0 && f.DATE_OK != null && UsersList.Contains(f.UsersId) 选择新产品列表 {});
在选择新的 ProductList 中,我从 Products 表中获取 10 个字段。 我也知道 Contains 给了我很大的性能问题
【问题讨论】:
-
你能和我们分享一下问题吗?
-
UsersList通常包含多少项?顺便说一句,具有 > 100 个字段的表听起来像是不健康的数据库设计,您可能需要一些规范化步骤。 -
用户列表从100到4000。很难说真的很遗憾我对表格设计没有任何影响:(
-
100 这应该不是问题。如果是,您必须查看正确的索引。对于较大的数字,您必须以块的形式获取数据:stackoverflow.com/q/24534217/861716.
标签: asp.net-mvc performance linq linq-to-sql