Estou vendo um desempenho realmente estranho relacionado a uma consulta muito simples usando o Entity Framework Code-First com .NET framework versão 4. A consulta LINQ2Entities se parece com isto:
context.MyTables.Where(m => m.SomeStringProp == stringVar);
Isso leva mais de 3.000 milissegundos para ser executado. O SQL gerado parece muito simples:
SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp],
...
FROM [MyTable] as [Extent1]
WHERE [Extent1].[SomeStringProp] = '1234567890'
Essa consulta é executada quase instantaneamente quando executada por meio do Management Studio. Quando eu altero o código C # para usar a função SqlQuery, ele é executado em 5 a 10 milissegundos:
context.MyTables.SqlQuery("SELECT [Extent1].[ID] ... WHERE [Extent1].[SomeStringProp] = @param", stringVar);
Portanto, exatamente o mesmo SQL, as entidades resultantes são rastreadas por alterações em ambos os casos, mas uma grande diferença de desempenho entre os dois. O que da?
Performance Considerations for Entity Framework 5