NET framework sürüm 4 ile Entity Framework Code-First kullanan çok basit bir sorgu ile ilgili gerçekten garip performanslar görüyorum. LINQ2Entities sorgusu şuna benzer:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Bunun yürütülmesi 3000 milisaniyeden fazla sürer. Oluşturulan SQL çok basit görünüyor:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Bu sorgu, Management Studio üzerinden çalıştırıldığında neredeyse anında çalışır. SqlQuery işlevini kullanmak için C # kodunu değiştirdiğimde, 5-10 milisaniye içinde çalışıyor:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Yani, tamamen aynı SQL, ortaya çıkan varlıklar her iki durumda da değişim izlenir, ancak ikisi arasında çılgın performans farkı vardır. Ne oluyor?
Performance Considerations for Entity Framework 5