【问题标题】:LINQ very SLOW when making .toList()制作 .toList() 时 LINQ 非常慢
【发布时间】:2014-01-07 00:20:29
【问题描述】:

我遇到了一个我无法解决的问题,

我在 linq 中做一个简单的查询:

List<MOV> mvs = (from x in new MyAppDataContextSingleton().DataContext.MOV
                                    where x.dateMOV.GetValueOrDefault(x.dateCriation).Date >= initialDate.Date && x.dateMOV.GetValueOrDefault(x.dateCriation).Date <= finalDATE.Date
                                    orderby x.dateMOV
                                    select x).ToList();

直接在 SQL 上执行这个查询非常快,它只返回大约 20 个结果! 当我使用 LINQ 在我的项目上执行此查询时,速度非常慢,耗时超过 20 秒:\ 但此问题仅在执行对该表的查询时发生。知道发生了什么吗?我该如何解决?

最好的问候, 安德烈

【问题讨论】:

  • 您的 MOV 对象是什么样的?你检查过这个 linq 查询生成的实际 SQL 吗?
  • 我会检查并查看 GetValueOrDefault 使用了多少时间,因为它为 MOV 中的每个项目调用了两次
  • Geoff,是的,如果我在 Management Studio 中运行生成的 SQL,它会运行得很快..
  • Phil,GetValueOrDefault 属性更快,我在很多其他查询中使用它,比如这个......并且效果很好! :\
  • 据我所知,您无法在 SQL 管理工作室中运行 Linq。所以你需要分析生成的 SQL 并在 SQL management studio 中执行它来检查查询计划

标签: linq linq-to-sql


【解决方案1】:

尝试关闭延迟加载:

db.DeferredLoadingEnabled = false;

http://msdn.microsoft.com/en-us/library/Bb386920(v=vs.100).aspx

【讨论】:

  • 这个查询的哪一部分可能会被推迟?
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多