Как оптимизировать один запрос, который будет вызываться несколько раз в LINQ Instant? - PullRequest
0 голосов
/ 03 июня 2018

Я звоню по одному запросу, чтобы получить данные о нескольких категориях на домашней странице моего веб-приложения, используя Ajax.Но его производительность отстой.Как его улучшить?

var result = _db.news.Where(a => a.Sector == sector)
    .OrderByDescending(a => a.ModifiedOn)
    .Select(a => new LatestNewsView { 
        Id = a.Id, 
        Title = a.Title, 
        CreatedOn = a.ModifiedOn, 
        ImageUrl = a.ImageUrl, 
        Sector = a.SubTitle, 
        Country = a.Country, 
        NewId = a.NewsId 
    })
    .AsNoTracking().Skip(skip).Take(take);

Ajax Call

$.ajax({ url: "/Home/NewsBySectorTitle?sector=10, dataType: "html" }).done(function (data) {$("#col1").append(data);});

1 Ответ

0 голосов
/ 03 июня 2018

Замедление может происходить из следующих источников:

  • база данных
  • сервер приложений
  • приложение
  • сеть на стороне сервера
  • размер ответа
  • подключение к Интернету
  • браузер

База данных

Вам нужно будет запустить запрос, сгенерированный LINQ, непосредственно в базе данных.Если это медленно, то у вас есть проблема производительности на уровне базы данных.В этом случае вам нужно взглянуть на схему базы данных, размер участвующих таблиц и сам запрос.Очевидно, что у вас есть фильтр по Sector.У вас есть индекс по этому полю?Если нет, это не мешало бы создать его.Это увеличит скорость операций чтения, но уменьшит скорость операций записи из-за того, что индекс будет рассчитываться.Тем не менее, чтения обычно гораздо чаще, чем записи.Посмотрите также на загружаемые столбцы.Является ли какой-либо из столбцов, содержащих длинные тексты больших данных?

Сервер приложений

Ваш IIS настроен для последовательной обработки запросов?Другие сайты работают на том же сервере?

Приложение

Вам нужно будет установить точку останова, чтобы убедиться, что эта операция действительно занимает много времени.Если это так, то это, скорее всего, проблема с базой данных, но не обязательно.Если, например, вы выполняете это много времени, с.Если это не так медленно, как вы думаете, медлительность может происходить из другого места в приложении.Возможно, другой запрос, или, если вы выполняете этот запрос много раз, вам может потребоваться изменить запрос для загрузки пакетов данных.

Сеть на стороне сервера

Возможно, вы захотите проверитьсторона сетевого сервера.Если сообщение в целом медленно поступает с маршрутизатора на сервер и обратно, то это может быть и причиной вашего конкретного случая.

Размер ответа

Возможно, что take очень большой или у вас длинный текст в каждой строке, и загрузка данных занимает много времени.В этом случае вы можете отправить первые 10 результатов изначально и загрузить остальные, пока пользователь просматривает первые 10.

Интернет-соединение

Если интернет-соединение на вашем сервере или на вашем сервере оченьмедленно, это также может быть не связано с программированием вашей проблемы.

Браузер

Вы добавляете данные через jquery.Если вы замените это на console.log('foo');, улучшится ли производительность?В этом случае ваша структура может быть очень сложной с большим количеством событий, в результате чего ваш браузер будет загружать вещи вечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...