Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Misuta
2 / 2 / 0
Регистрация: 27.10.2021
Сообщений: 129

Как оптимизировать запрос к базе данных?

01.07.2024, 10:34. Показов 456. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void CompletRequestActionItemExecutionTasks()
    {
      if (_obj.AppealCloseddev == true)
      {
        var assignments = ActionItemExecutionAssignments.GetAll(a => a.Created>= _obj.Created).ToList();
        
        foreach (var item in assignments)
        {
          var document = item.DocumentsGroup.OfficialDocuments.FirstOrDefault();
          
          if (document != null && document == _obj)
            item.Complete(Sungero.RecordManagement.ActionItemExecutionAssignment.Result.Done);
        }
        
      }
    }
Суть функции: функция смотрит, какие задания связаны с документом _obj, и завершает их. Чтобы определить, принадлежит ли задание данному документу, нужно посмотреть, какой документ лежит во вложение в задании(по другому определить это никак нельзя). Из-за того, что заданий очень много, функция падает по ошибке: Сервер прекратил обработку запроса по таймауту.

Как можно оптимизировать данную функцию? И как вообще обычно поступают в таких случаях?
Время таймаута увеличивать не хочется, оно и так 60 сек., да и количество заданий в базе растет каждый день.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2024, 10:34
Ответы с готовыми решениями:

Как оптимизировать сложный запрос на нагруженной базе MYSQL?
Друзья всем привет! Имеем проект, в нем есть 2 динамически меняющиеся таблицы. По ним нужно делать селект с джойном. Проблема в том, что...

Как сформировать запрос по базе данных
Создал базу, не понимаю как сформировать запросы для вывода информации для формы 1-ПНН Подскажите на примере Нужно каждую продукцию...

Как сделать запрос к базе данных?
есть таблицы: 1. операции с товарами(код,договор,дата,товар,количество,единица,тип операции) 2. операции -(код,тип операции)...

2
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
01.07.2024, 10:41
Misuta, это классическая ошибка при работе с EF: выгребать в оперативку кучу всего, а потом это перебирать и как-то обсасывать, играясь в DDD.

Самое простое, что тут можно и нужно сделать: выгребать из базы только подпадающие под условия данные. Т.е. вот это:

C#
1
2
3
          var document = item.DocumentsGroup.OfficialDocuments.FirstOrDefault();
          
          if (document != null && document == _obj)
Тоже в базе должно выполняться, а не в оперативке. Соответственно, вложенные item.DocumentsGroup.OfficialDocuments. выгребать будет не надо.

Это очень сильно уменьшит объём выгребаемых данных.

Путь, которым пошёл бы я: заменил бы EF на Linq2Db и постарался бы заменить этот запрос на UPDATE * WHERE, чтобы вообще ничего на клиент не дёргать из базы, а только инструктировать, что надо такие-то записи (подпадающие под условие выше), пометить как завершённые.
3
16 / 17 / 0
Регистрация: 12.01.2022
Сообщений: 142
02.07.2024, 08:38
Usaga, открыл для себя Linq2Db. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2024, 08:38
Помогаю со студенческими работами здесь

Как написать запрос к базе данных
Работаю на Visual Basic2008. Написал программу. В ней добавил бд с возможностью изменять ее непосредственно из программы. Но тут возник...

Как вставить переменные в запрос к базе данных
Добрый вечер коллеги (правда я вам не ровня, но всё же ), как вставить переменные в запрос к базе данных, вроде всё делаю по инструкции но...

Как правильно составить запрос к базе данных?
Здравствуйте. Нужна помощь в составлении запроса к базе данных. Есть некоторая база данных в ней находятся таблицы. Есть одна...

Как выполнить SQL запрос к базе данных
Доброго времени суток. Первый раз в жизни разрабатываю приложение на WPF. Содержимое таблички удалось показать на экране через DataSet, а...

Как сделать SQL запрос к базе данных
Как сделать SQL запрос к базе данных на обновление дополнительного поля в таблице dle_post, где xfields - параметр доп. поля в таблице, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru