Получение большого объема данных
<< Click to Display Table of Contents >> Разработка > Рекомендации по разработке для масштабируемых систем > Быстродействие операций Получение большого объема данных |
На быстродействие может негативно влиять включение большого объема данных в список ToList(). При написании кода нужно помнить, что при работе с потенциально большими данными лучше использовать параметризованный тип IQueryable (запрос на получение данных). Он содержит только сущности. Например, IQueryable<IContractualDocument>. Тогда данные с сервера подгружаются порциями, и можно работать с ними, не ожидая полной загрузки с сервера. ToList() применяется для работы с уже ограниченным списком сущностей.
Если запрос возвращает больше 1000 записей, информация о нем по умолчанию записывается в лог-файлы веб-сервера. С помощью этого разработчик может найти неоптимальные запросы в прикладном коде и доработать их. Также время обработки запросов и количество возращенных ими записей можно отслеживать с помощью решения «Мониторинг системы Directum RX».
Кроме того, не рекомендуется без необходимости получать сущность целиком, если нужны только некоторые ее свойства. Вместо этого используйте ограниченную выборку. Таким образом SQL-запросы становятся проще и выполняются быстрее.
Пример оптимального кода для запроса одного параметра
GetRelatedDocuments().Select(d => d.SomeProperty));
Пример оптимального кода для запроса нескольких параметров
// Получить информацию обо всех связанных документах.
var relatedInfo = electronicDocument.Relations.GetRelatedAndRelatedFromDocuments().Select(d => new DocumentInfo() { Id = d.Id, Name = d.Name }).ToList();
© Компания Directum, 2024 |