【问题标题】:Entity Framework - slow when using a simple query实体框架 - 使用简单查询时速度慢
【发布时间】:2015-08-22 22:35:30
【问题描述】:

我在实体框架中有一个简单的类如下:

public class Merchandising
{
    public int Id { get; set; }

    public int Index { get; set; }    

    public int CategoryId { get; set; }

    public int? CardId { get; set; }  
}

在数据库中,它大约有 1000 行,直接查询不到一秒,但是当我执行这条语句时,它需要 55 秒才能运行——我觉得这很奇怪。任何人都可以对此有所了解吗?

var mm = a.Merchandisings.ToList();    
var m = mm.Where(f => f.CategoryId == catId).ToList();

catId 是一个整数值,mm 需要几分之一秒的时间来执行。 mm 返回大约 1000 行,m 返回 40 行。 M 执行大约需要 55 秒。

我假设虽然CategoryIdCardId 都链接到其他类(并且是大数据对象),但由于没有延迟加载,因此不会加载数据。

我真的不明白为什么 m 需要这么长时间才能执行,我想这与缺乏公平框架知识有关。有人可以帮忙吗?

【问题讨论】:

  • 看看分析器,调查发送到数据库的实际查询

标签: c# linq entity-framework linq-to-entities


【解决方案1】:

问题是当您在第一行调用ToList 方法时,您会将所有元素都带入内存,因此请先尝试过滤以避免加载不满足条件的不必要元素,然后再调用@ 987654322@方法:

var m =  a.Merchandisings.Where(f => f.CategoryId == catId).ToList();

【讨论】:

  • 谢谢 - 虽然这并没有直接解决问题 - 它让我找到了一个存储在内存中并且更大的变量,一旦我把它关掉,它就可以正常工作了。跨度>
猜你喜欢
  • 2013-01-30
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2014-12-13
相关资源
最近更新 更多