[英]Entity Framework performance problems
我遇到以下查询需要大约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”的发布日期,您的列表将包含这些字符串。
进一步阅读: http : //blogs.msdn.com/b/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx
在电影名称字段上创建索引。 另外,通过探查器捕获查询并在启用了Show Plan的Sql Management Studio中执行它。 它将为您提供一些见解,以优化查询性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.