请帮助我找到提高效率的方法
程序具有以下实体:
项目1-N模块
模块1-N子模块。
子模块1-N段。
每个段都有不同的状态(默认/完成)和字数统计
当将句段插入数据库并存储在列中时,进行单词计数。
视图。 项目列表 应该少于100个项目,以便该项目将所有项目都列出而不包含include。
模块列表(参数为1 projectId)应具有一列,该列的单词已完成/总计,行已完成/总计
子模块列表(参数为1 moduleId)应具有一列,该列的单词已完成/总计,行已完成/总计
假设我每个模块有大约5万行(段)。所以性能是必须的。
选项1:
某种IQueryable Childs.Count()
选项2:
使用CRON作业将Stats列添加到数据库中的表以更新它们
或在mysql中具有存储的过程/触发器。
选项3?:在mysql中创建2个视图?从来没有做过,但也许他们适合这项工作?
建议的选项:暂时没有
以前从未使用过如此大的数据集,因此性能是必不可少的。 请指教
答案 0 :(得分:0)
var query = _context.Submodules.Where(t => t.Id == id)
.Select(e => new Submodules{
Id = e.Id,
Name = e.Name,
Status = e.Status,
Token = e.Token,
ModuleId = e.ModuleId,
Gender = e.Gender,
TotalRows = e.TotalRows,
TotalWords = e.TotalWords,
CompletedWords = e.Segments.Where(a => a.Status == Abr.Recorded).Sum(y=> y.Wordcount),
CompletedRows = e.Segments.Where(a => a.Status == Abr.Recorded).Count()
}).ToList();