LINQ 查询需要更多时间来执行
Posted
技术标签:
【中文标题】LINQ 查询需要更多时间来执行【英文标题】:LINQ queries take more time to execute 【发布时间】:2018-04-26 17:31:39 【问题描述】:这是我的 LINQ 查询,执行需要很长时间。 谁能建议我如何让它更快。 此查询需要将近 1.35 分钟才能加载。
从我在模型中添加的列表中
var jobList = option.Equals("search")
? _jobService.SearchJobs(_dataModel.SearchFilter, _dataModel.CurrentPage - 1, _dataModel.EntriesPerPage,
_dataModel.KeyWords, _dataModel.Location)
: _jobService.BrowsJobs(_dataModel.BrowseFilterIds, _dataModel.CurrentPage - 1,
_dataModel.EntriesPerPage);
_dataModel.DbJobs = jobList;
_dataModel.Jobs = jobList.Select(job => new JobsViewModel
JobId = job.JobId,
JobTitle = job.JobTitle,
SeoFriendlyJobTitle = job.JobTitle.ToSeoFriendly(),
Created = job.Created,
CreatedBy = job.CreatedBy,
LocationName =
job.LocationId != null
? _locationService.GetById((int)job.LocationId).LocationName
: string.Empty,
JobTypeName = _jobTypeService.GetById(job.JobTypeId).JobTypeName,
RecruiterName =
job.RecruiterId != new Guid()
? _recruiterService.GetById(job.RecruiterId).RecruiterName
: string.Empty,
SeoFriendlyRecruiterName =
job.RecruiterId != new Guid()
? _recruiterService.GetById(job.RecruiterId).RecruiterName.ToSeoFriendly()
: string.Empty,
RecruiterId = job.RecruiterId,
StartDate = job.StartDate,
LocationDescription = job.LocationDescription,
SalaryDescription = job.SalaryDescription,
JobSummary = job.JobSummary,
JobSummaryShort = job.JobSummaryShort,
LogoPath = job.Logo.IsNullOrWhiteSpace() ? job.LogoOverride : job.Logo,
PremiumJob = job.Advertising.Count > 0 && job.Advertising.ElementAt(0).PremiumListing,
DaysRemaining = new Helpers().BuildDaysRemainingString(job.EndDate)
).ToList();
【问题讨论】:
最明显的问题是您在.Select()
表达式中进行了四个服务调用。我希望这些服务调用使用缓存而不是访问数据库。
不 @DanWilson 我没有使用缓存,明天实施,但我认为从其他任何问题来看它都有时间
您可以将代码分解为多个段并使用 System.Diagnostics.Stopwatch 来识别和定位违规瓶颈
jobList.Select 中的一些调用可能应该是左连接(使用新服务),即您调用了_recruiterService,我认为这可以是选择中的左连接。
【参考方案1】:
这些是您查询中的服务调用吗?如果是这样,很可能这就是导致缓慢的原因。
【讨论】:
以上是关于LINQ 查询需要更多时间来执行的主要内容,如果未能解决你的问题,请参考以下文章