簡體   English   中英

實體框架性能問題

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM