[英]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.