В настоящее время я работаю над этим запросом в EF 6.Проблема производительности Entity Framework с запросом
using (var metadata = new DMSEntities())
{
var q = from row in metadata.db_Patient orderby row.Name
where !row.isDeleted where row.FileLocation.StartsWith(SearchTerm)
|| row.Name.StartsWith(SearchTerm)
|| row.Surname.StartsWith(SearchTerm)
|| row.IDNumber.StartsWith(SearchTerm)
|| row.Initials.StartsWith(SearchTerm)
select new bl_Patient
{
Name = row.Surname,
Surname = row.Name,
IDNumber = row.IDNumber,
Initials = row.Initials,
Location = row.FileLocation,
patientID = row.patientID
};
var FCount = q.FutureCount();
var Results = q.Skip(Paging.Skip).Take(Paging.Take).Future();
var Count = FCount.Value;
var TotalPages = Count/10;
if (TotalPages!= 0 && Count % TotalPages != 0)
{
TotalPages = TotalPages+1;
}
Paging.TotalPages = TotalPages;
return Results.ToList();
}
Есть в любом случае для увеличения производительности. У меня нет доступа к студии sql, поэтому создание представлений или хранимых процедур не будет работать. На моей тестовой машине все работает отлично, однако на клиентах гораздо медленнее ноутбук, который он висит при первой загрузке. Любая помощь будет оценена по достоинству.
Редактировать: Я вижу, что мой вопрос настроен на удержание, поэтому позвольте мне посмотреть, смогу ли я прояснить некоторые вещи.
Прежде всего это приложение для форм Windows, которое я создал, чтобы помочь одному из моих друзей. База данных и приложение запускаются с одной машины. Я использую SQL-сервер. Никаких требований, согласованных мной или клиентом, не было, поскольку это было сделано просто как одолжение. Ноутбук имеет двухъядерный 2,4-гигабайт и 4 ГБ оперативной памяти и составляет около 4 лет. Я задал вопрос, потому что хотел узнать, есть ли другие советы, которые можно дать. Я объяснил клиенту, что нет реального способа повысить производительность, поскольку реальной проблемой является ноутбук. Мы нашли способы решения проблемы, и клиент может использовать приложение сейчас. Также просто, чтобы вы, ребята, знали, что у меня всего около полутора лет опыта разработки, поэтому я задал этот вопрос больше, чтобы увеличить свой собственный навык, а затем решить актуальную проблему.
Дополнительная информация о том, что я изменил.
Я выполнил минимум 3 буквы на элементах поиска. Это в основном решило проблему.
Я также добавил некоторые индексирования, поскольку они никогда не делали этого раньше и должны были читать по этому поводу.
В базе данных имеется около 4000 предметов, но по-прежнему они иногда висят, но теперь они менее подвержены сбоям и полностью пригодны для использования.
На фоне приложения это просто управление пациентами и расположение там папок. Я только опубликовал этот запрос, поскольку это единственный вопрос, который дает проблемы. Других методов списка нет.
Вы хотите получить ответ на основе только одного запроса? Как насчет некоторой информации о приложении и архитектуре. Все ли работает на одной машине? Можно ли даже ожидать, что он будет работать на клиентской машине? С какими минимальными требованиями к оборудованию вы соглашались с клиентом? Как насчет индексов? Размер таблицы/базы данных? –
@GertArnold Я извиняюсь за неопределенный вопрос, я попытался улучшить его и буду заботиться о будущем. –
Хорошо, это хорошо. Я думаю, что возобновление вопроса не очень полезно больше, потому что оно имеет принятый ответ, и на данный момент, похоже, не существует прямой проблемы. По крайней мере, вы улучшили свои навыки, чтобы задать вопрос в вопросе переполнения стека, что тоже неважно. –