【发布时间】: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