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 查询需要更多时间来执行的主要内容,如果未能解决你的问题,请参考以下文章

pl sql查询需要更多时间来执行

如何使用 LINQ 查询? [关闭]

从LinqPad入门Linq

Linq 更新需要很长时间来处理

查询执行需要更多时间

执行 Linq 组加入是不是有更好的解决方案?