【问题标题】:Linq to Entity Query very slowLinq to Entity Query 非常慢
【发布时间】:2012-06-23 03:46:17
【问题描述】:

我有一个运行非常缓慢的 LINQ to Entity 查询。此查询在特定数据库上执行一些计算逻辑,然后将结果传递给 ViewModel。查询非常快,直到我在查询底部添加了 4 个选择语句。我需要选择语句才能返回结果响应的集合。为什么查询运行这么慢?

  var data = from SurveyResponseModel in db.SurveyResponseModels
                       group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount
                       select new ResultsViewModel()
                       {

                           YesBarriersOthersResult = resultCount.Select(r => r.YesBarriersOthers),
                           NoBarriersOthersResult = resultCount.Select(r => r.NoBarriersOthers),
                           TotalResponsesResult = db.SurveyResponseModels.Count(),
                       };




            return View(data);

【问题讨论】:

  • 我会检查实际的 SQL 命令。也许一些查询执行了多次,或者 EF 创建了一些疯狂的子查询?
  • 这是个好建议。我使用 SQLCOmpact 版本进行开发,但现在切换到 SQL Server 2008R2 后似乎快了很多。

标签: c# asp.net-mvc-3 linq entity-framework


【解决方案1】:

我很难告诉你这里到底出了什么问题,但是在遇到类似的 orms 问题时,我可以建议调试问题的最佳方法是找出实际生成的 sql 语句并针对数据库。很多时候,您的 ORM 可能会运行太多 sql 语句而无法获得相同的简单结果。

【讨论】:

  • 是的。 @[Vishal Kumar] 是对的。而检查 sql 语句及其过程的最佳方法是使用 SQL Profiler。如果您安装了它,那么创建跟踪并查看 SQL 端的实际情况非常容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多