我遇到了以下查询需要大约 700 毫秒才能执行的问题。它在一个循环中,被调用了 100 多次,所以它需要很长时间。
型号:
public class ReleaseDates
{
public int Id { get; set; }
public string MovieName { get; set; }
public string Country { get; set; }
public DateTime ReleaseDate { get; set; }
public string AlternateSource { get; set; }
}
查询:
public async Task<List<ReleaseDates>> GetReleaseDatesAsync(string movieName)
{
return await Db.ReleaseDates.Where(x => x.MovieName == movieName && string.IsNullOrEmpty(x.AlternateSource)).ToListAsync();
}
有什么建议可以加快速度吗?
最佳答案
摆脱循环。那就是问题所在。您正在向数据库发送大量查询。
将您要搜索的所有电影名称存储在一个列表中,并在其中进行包含。
public async Task<List<ReleaseDates>> GetReleaseDatesAsync(List<string> movieNames)
{
//movie names that you're searching for - movieNames
return await Db.ReleaseDates.Where(x => movieNames.Contains(x.MovieName) && string.IsNullOrEmpty(x.AlternateSource)).ToListAsync();
}
如果您想获取“Ant Moon”、“GodZippa”、“SuperWan”的发布日期,您的列表将包含这些字符串,就是这样。
关于c# - Entity Framework 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051523/