Entity Frameworkのパフォーマンスが実際に低下しています。SQLパフォーマンスの最適化(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:30
EFが制限された制御があそこにあることを考慮EFクエリを最適化することができますどのように
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
生成:ここ は私のテストケース(擬似)、同じデータの定期的な選択でありますSQLのレンダリング方法は?
'( 'a'、 'b')'の縫い目はEF版では欠けています。それは大きな違いをもたらすかもしれません。 –
@Mikael - 答えになるはずです。 – cjk
@ck - もちろんです。 –