Я отлаживал некоторый медленный код, и кажется, что виновником является код EF, указанный ниже. Это займет 4-5 секунд, когда запрос оценивается на более позднем этапе. Я пытаюсь заставить его работать менее чем за 1 секунду.
Я тестировал это с помощью SQL Server Profiler, и кажется, что выполняется куча SQL-скриптов. Он также подтверждает, что он занимает 3-4 секунды, прежде чем SQL-сервер будет выполнен с выполнением.
Я прочитал другие подобные вопросы об использовании Include(), и кажется, что при его использовании существует штраф за производительность. Я попытался разбить приведенный ниже код на несколько разных запросов, но это не имеет большого значения.
Любая идея, как я могу получить ниже, чтобы выполнить быстрее?
В настоящее время веб-приложение, над которым я работаю, просто показывает пустой iframe, ожидая завершения ниже. Если я не могу получить более быстрое время выполнения, я должен разбить его и частично загрузить iframe с данными или перейти к другому асинхронному решению. Любые идеи здесь также будут оценены!
using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
formInstance = context.FormInstanceSet
.Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormSectionDefinitions).Include(fs => fs.FormStateDefinitionEditableSections))
.Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormStateDefinitions))
.Includes(x => x.Include(fi => fi.FormSectionInstances).Include(fs => fs.FormFieldInstances).Include(ff => ff.FormFieldDefinition).Include(ffd => ffd.FormFieldMetaDataDefinition).Include(ffmdd => ffmdd.ComplexTypePropertyNames))
.Include(x => x.CurrentFormStateInstance)
.Include(x => x.Files)
.FirstOrDefault(x => x.FormInstanceIdentifier == formInstanceIdentifier);
scope.Complete();
}