Я строю сайт фильма.Я использую MVC3 и сущности.Я использую в основном LINQ to Entities для запроса базы данных.GUI сайта в основном представляет собой одну страницу просмотра, которая помимо первой загрузки, я использую в основном Ajax для обновления списка фильмов в соответствии с критериями поиска и тому подобное.Поэтому я использую один основной запрос.Когда я проверяю это в режиме отладки, я вижу, что каждый раз выполнение запроса занимает 10 секунд, что, конечно, очень медленно.Я проиндексировал базу данных в соответствии с моими базовыми знаниями.Вот основной код запроса:
var casts = MovieCasts.Where(d =>
movieIds.Contains(d.MovieId)
&& d.WorkingTitleId != null &&
actorAndActressWtIds.Contains((int)d.WorkingTitleId)).AsEnumerable()
.Where(d=>GetMoviesTop4CelebIds(d.MovieId).Contains(d.CelebId))
.AsQueryable()
.Select(d =>new MCast
{
MovieId = d.MovieId,
Id = d.Id,
CelebId = d.CelebId,
CelebPageViews = d.Celebrity.PageViews,
ActingParts = string.Join(",",d.ActingParts.Select(e => e.Name)),
ActorName = HttpUtility.HtmlDecode(d.Celebrity.ShortName) ??
HttpUtility.HtmlDecode(d.Celebrity.BirthName),
}).ToList();
GetMoviesTop4CelebIds () - это функция, которая напрямую обращается к базе данных и возвращает короткий список int (celebId) в соответствии с идентификатором фильма.Вот почему я использовал первый AsEnumerable (), иначе он выдал ошибку «LINQ to Entities не распознает метод и не может перевести ...» (забавная вещь, которую я должен упомянуть, это то, что мой код работает медленно в режиме отладки, когда я используюточки останова и быстро без него. Это в разработке. В производстве код очень медленный.) Может кто-нибудь, пожалуйста, помогите мне пролить свет на код?Мне бы очень хотелось и нужно улучшить производительность.