Saya melihat beberapa kinerja yang sangat aneh terkait dengan kueri yang sangat sederhana menggunakan Entity Framework Code-First dengan .NET framework versi 4. Kueri LINQ2Entities terlihat seperti ini:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Ini membutuhkan lebih dari 3000 milidetik untuk dieksekusi. SQL yang dihasilkan terlihat sangat sederhana:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Kueri ini berjalan hampir secara instan saat dijalankan melalui Management Studio. Ketika saya mengubah kode C # untuk menggunakan fungsi SqlQuery, ini berjalan dalam 5-10 milidetik:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Jadi, SQL yang sama persis, entitas yang dihasilkan dilacak perubahannya dalam kedua kasus, tetapi perbedaan kinerja yang liar di antara keduanya. Apa yang memberi?
Performance Considerations for Entity Framework 5