Entity framework 搜索优化 (Enumerable.where(c => c.collection.any(条件)))
Entity framework search optimization (Enumerable.where(c => c.collection.any(condition)))
我很难解决这个问题,
我有一个有很多关系的成员对象,其中 2 个来自同一个 table,但一个是卖家,一个是买家
public partial class Member {
//a lot of properties, then the one i am using for my search
public virtual ICollection<Trade> Trades1 { get; set; }
public virtual ICollection<Trade> Trades2 { get; set; }
}
我正在使用的 linq
members = context.Members.AsNoTracking().Include(x => x.Trades1).Include(x => x.Trades2)
.Where(x => x.MemberStatus != StatusTypeRef.MemberStatus.ClosedAccount &&
(x.Trades1.Any(d => d.Date >= startDate &&
d.Date <= EndDate &&
d.Status== "Completed" &&
d.BuyAmount >0)
||
x.Trades2.Any(d => d.Date >= StartDate &&
d.Date <= EndDate && d.Status =="Completed" &&
d.SellAmount > 0)));
这需要很长时间才能处理,还要注意贸易 table 有很多数据,这是问题所在吗?
这个怎么优化啊,真的很慢
我尝试先获取交易,然后将所有会员 ID 投射到一个列表中,并用它来搜索所有会员,但速度较慢。
任何意见,将不胜感激。谢谢。
搜索后,除了删除所有我不需要的 Includes
之外,没有什么可做的。
我很难解决这个问题, 我有一个有很多关系的成员对象,其中 2 个来自同一个 table,但一个是卖家,一个是买家
public partial class Member {
//a lot of properties, then the one i am using for my search
public virtual ICollection<Trade> Trades1 { get; set; }
public virtual ICollection<Trade> Trades2 { get; set; }
}
我正在使用的 linq
members = context.Members.AsNoTracking().Include(x => x.Trades1).Include(x => x.Trades2)
.Where(x => x.MemberStatus != StatusTypeRef.MemberStatus.ClosedAccount &&
(x.Trades1.Any(d => d.Date >= startDate &&
d.Date <= EndDate &&
d.Status== "Completed" &&
d.BuyAmount >0)
||
x.Trades2.Any(d => d.Date >= StartDate &&
d.Date <= EndDate && d.Status =="Completed" &&
d.SellAmount > 0)));
这需要很长时间才能处理,还要注意贸易 table 有很多数据,这是问题所在吗? 这个怎么优化啊,真的很慢
我尝试先获取交易,然后将所有会员 ID 投射到一个列表中,并用它来搜索所有会员,但速度较慢。 任何意见,将不胜感激。谢谢。
搜索后,除了删除所有我不需要的 Includes
之外,没有什么可做的。