我有一些产品类别可以继承到更高的等级(在我的项目中,我有最高4年级)。例如(1)Digital_Product-> (2)Mobile-> (3)Android-> (4)索尼
我想从每个根类别(1级)中选择2个最新产品。我使用下面的查询,但它在1800毫秒处理。问题是groupBy查询。当我删除Groupby时,它在100ms内处理。
IEnumerable<Db.Article> _List = uow.ArticleRepository.Get().Where(x =>
x.ArticlePropertyValues.Any(c => (_Status == "All" || c.ArticleProperty.Key == _Status))
&& x.IsActive == true
&& x.IsDeleted == false
&& (_Type == -2 || x.ArticleCategory.TypeID == _Type)
).GroupBy(p => p.ArticleCategory.ParentID == -1 ?
p.ArticleCategory.ID :
(p.ArticleCategory.ArticleCategory1.ParentID == -1 ? p.ArticleCategory.ArticleCategory1.ID :
(p.ArticleCategory.ArticleCategory1.ArticleCategory1.ParentID == -1 ?
p.ArticleCategory.ArticleCategory1.ArticleCategory1.ID :
p.ArticleCategory.ArticleCategory1.ArticleCategory1.ParentID))
).SelectMany(p => p.OrderByDescending(x => x.ID).Take(2));
ParentID不是外来ID,数据库中没有使用索引。