Eu tenho um pedido como este
SELECT
[EstimateId],
[CreationUserId],
[EstimateStatusValueId],
[LanguageId],
[LocationId],
[EstimatorUserId],
[FilterUnitSystemTypeId],
[EstimateNumber],
[RevisionNumber],
[CreationDate],
[ModificationDate],
[ProjectDescription],
[IsBsdq],
[ClosingDate],
[ClosingTime],
[ClosingUpdatedOn],
[DeadLineDate],
[IsReceived],
[Inclusion],
[Exclusion],
[Misc],
[Note],
[WorkDeadLines],
[Comments],
[Validity],
[PlansLocation],
[PlansReceivedFrom],
[Price]
FROM [Estimate].[Estimates]
ORDER BY [ClosingDate] ASC, [ClosingTime] ASC
Quando executo essa consulta no SSMS, obtenho um tempo de execução de 953ms, mas quando executo essa consulta em uma Consulta Linq no meu C # recebo um tempo de execução de 1813ms.
A consulta Linq usa o ".Net SqlClient Data Provider" e é emitida no EntityFramework (arquivo EDMX). Isso pode ser um problema?
Alguém sabe por que eu tenho uma grande diferença entre os tempos de execução das solicitações iguais, mas executadas em diferentes contextos no mesmo banco de dados?
Eu verifiquei todos os planos de execução de ambos os pedidos e eles usam o mesmo índice para satisfazer suas respectivas consultas.
Para ver o plano de execução da solicitação C #, uso o criador de perfil SQL para interceptar o evento Show Plan XML e comparo-o ao do SSMS e ambos são iguais.
Respostas:
Isso é consistente, vez após vez?
Vejo uma diferença de CPU que pode ser tempo de compilação. Existem configurações de LINQ que afetam isso?
Editar:
fonte
Eu acho que o problema está no arquivo EDMX usado para gerar consultas a partir do aplicativo C #.
Encontrei os links que explicam o caso.
Projeto de código
Stackoverflow-1
Stackoverflow-2
fonte
Você deseja examinar os planos de execução para as duas consultas e ver onde elas são diferentes.
fonte