我有一个LINQ查询,从我的客户表中选择几个字段。结合LINQ查询与实体框架C#
应用于此方法的是多个过滤器,使用Func<IQueryable<T>, IQueryable<T>>
和.Invoke
。
原始查询本质上是select * from customer
。
过滤方法本质上是select top 10
输出SQL是select top 10 from (select * from customer)
我的客户表中有超过100多万行这将导致该查询以约7秒SSMS执行。如果我通过在SSMS中运行它来将输出SQL更改为select top 10 from (select top 10 * from customer)
,那么查询是即时的(如您所期望的)。
我想知道是否有人知道什么可能会导致LINQ不能以很好的方式组合这些东西,以及是否可以实现最佳实践/解决方法。
我应该注意到我的实际代码不是select *它选择了几个字段,但没有什么更复杂的了。
我使用SQL Server 2008和MVC 3与实体框架(不知道是什么版本)
编辑:我要补充,这是IQueryable的一路中,没有评估,直到结束,其结果是长时间的执行仅限于这一行。
你曾经解决过这个问题吗? – 2012-06-21 11:05:59