我在Entity Framework中遇到了非常糟糕的性能。
我将它绑定到视图,使用EF查询它们需要3-6倍的时间。
下面是我的测试用例(伪),对相同数据的常规选择:
Select * FROM myView
WHERE DateField > X
AND DateField < Y AND ID in ('a','b')
AND [expirationDateTime] = '9999-12-31'
Execution Time: 0:30EF生成的SQL
exec sp_executesql N'SELECT
[Extent1].[Field1] AS [Field1],
...
FROM (SELECT
[myView].Field1 AS [Field1]
...
FROM [dbo].[myView] AS [myView]) AS [Extent1]
WHERE ([Extent1].[DateField] > @p_linq__0)
AND ([Extent1].DateField] < @p_linq__1)
AND ([Extent1].[expirationDateTime] = @p__linq__2)',
N'@p__linq__0 datetime,@p__linq__1 datetime,@p__linq__2 datetime',
@p__linq__0='2010-12-01 00:00:00',
@p__linq__1='2011-01-06 00:00:00',
@p__linq__2='9999-12-31',
Execution Time: 2:54考虑到对如何呈现SQL的控制有限,如何优化EF查询?
发布于 2011-02-02 01:23:02
EF版本中缺少AND ID in ('a','b')接缝。这可能会有很大的不同。
发布于 2011-03-01 17:30:05
你把(NOLOCK)放在你所有的视图中了吗?LOL
https://stackoverflow.com/questions/4865535
复制相似问题