У меня есть такая просьба
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
Когда я запускаю этот запрос в SSMS, я получаю время выполнения 953 мс, но когда я запускаю этот запрос из запроса Linq в моем C #, я получаю время выполнения 1813 мс.
В запросе Linq используется «поставщик данных .Net SqlClient», который выдается против EntityFramework (файл EDMX). Это может быть проблемой?
Кто-нибудь знает, почему у меня большая разница между временем выполнения тех запросов, которые одинаковы, но выполняются из другого контекста для одной и той же базы данных?
Я проверил все планы выполнения обоих запросов, и они используют один и тот же индекс для удовлетворения своих запросов.
Чтобы увидеть план выполнения запроса C #, я использую профилировщик SQL, чтобы перехватить событие Show Plan XML, и сравниваю его с одним из SSMS, и оба они одинаковы.
Ответы:
Это последовательно, раз за разом?
Я вижу разницу в процессоре, которая может быть во время компиляции. Есть ли какие-либо настройки LINQ, которые влияют на это?
Редактировать:
источник
Я думаю, что проблема в использовании файла EDMX для генерации запросов из приложения C #.
Я нашел те ссылки, которые объясняют случай.
Код проекта
Stackoverflow-1
Stackoverflow-2
источник
Вы захотите взглянуть на планы выполнения для двух запросов и увидеть, где они отличаются.
источник