Tôi thấy một số hiệu suất thực sự kỳ lạ liên quan đến một truy vấn rất đơn giản bằng cách sử dụng Entity Framework Code-First với .NET framework phiên bản 4. Truy vấn LINQ2Entities trông giống như sau:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Quá trình này mất hơn 3000 mili giây để thực thi. SQL được tạo trông rất đơn giản:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Truy vấn này chạy gần như ngay lập tức khi chạy qua Management Studio. Khi tôi thay đổi mã C # để sử dụng hàm SqlQuery, nó sẽ chạy trong 5-10 mili giây:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Vì vậy, cùng một SQL chính xác, các thực thể kết quả được theo dõi thay đổi trong cả hai trường hợp, nhưng có sự khác biệt hoàn toàn giữa hai trường hợp. Đưa cái gì?
Performance Considerations for Entity Framework 5