首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Entity Framework + LINQ Speed vs String Query Speed?

Entity Framework + LINQ Speed vs String Query Speed?
EN

Stack Overflow用户
提问于 2012-04-06 14:57:39
回答 2查看 525关注 0票数 3

我继承了一个C# / ASP.NET MVC / Entity Framework项目,但速度有点慢。数据库中的数据不是很多,但是对.Include()的调用导致了速度减慢。

然而,我发现了一些非常奇怪的事情。我有一个只有数字(5列)的2k行表。我对要搜索的列有索引。

执行以下操作时:

代码语言:javascript
复制
_entities.MyTable.Where(x=> x.Id1 == 4 && x.Id2 == 5).First()

在我的开发机器上需要1800ms。

然而,当我这样做的时候:

代码语言:javascript
复制
_entities.MyTable.Where("it.Id1 = 4 and it.Id2 = 5").First()

大概需要10毫秒。

怎么回事?我不明白为什么LINQ表达式会这么慢。

EN

回答 2

Stack Overflow用户

发布于 2012-04-06 15:01:34

打开Sql Profiler,查看来自EF的查询。试着分析它,制定计划。EF似乎以一种奇怪的方式实现查询,而不获取索引。

票数 0
EN

Stack Overflow用户

发布于 2012-04-07 13:16:40

是不是EF必须生成SQL来执行第一个示例中的where子句,而在第二个示例中,生成SQL要容易得多,因为它只需插入已经提供的SQL即可。

我发现EF在生成查询方面非常慢,在这种情况下似乎不太可能,因为在这两种情况下它都是一个相当简单的查询。

您是否尝试过编译第一个查询并多次运行它,以检查执行时间是否只包括实际运行SQL,而不只是生成它?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10040211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档