Mysql и периоды дат - как не превысить квоту?

312
01 августа 2021, 05:40

Максимально упрощенно опишу вопрос:

Есть небольшая программка для учета загрузки производства.

Есть небольшая табличка:

  1. id: INT - Primary Key
  2. id_order: INT - номер заказа
  3. date_start - начало производство заказа
  4. date_end - конец производства заказа

То есть в таблице записи указывают с какого по какое число будет производится определенный заказ.

Однако производство имеет ограничение - не более 5 заказов в день.

перед добавление нового заказа нужно проверить каждую дату предполгаемого периода чтобы в ней уже не было 5 заказов в производстве.

Если заказов уже 5 в дате - она недоступна для размещения заказа.

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

SELECT COUNT(id_order) FROM `calendar` WHERE `date_start`<='2019-09-18' and `date_end`>='2019-09-18'.

Но в ростом таблицы все это стало работать медленно просто до жути даже с учетом индексов.

Можно ли как-то построить один запрос, который сразу бы выводил максимальное кол-во заказов в день в определенный период?

Например: менеджер хочет чтобы его заказ, требующий на изготовление 8 днЕЙ изготовили с 18.09.2019 по 25.09.2019. Как один запросом узнать, если в периоде с 18 по 25 сентября 2019 года хоть один, в котором произвоство уже загружено максимальными 5 заказами в день?

Если есть - то период недоступен для размещения заказа, если нет - то доступен.

Прошу помочь)

P.S.: Mysql версии 5.0.11

READ ALSO
Каким должен быть запрос для сортировки дат?

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

Как выполнить сортировку дат используя только ORDER BY в следующем порядке:

204
Получить данные разных столбцов как один

Получить данные разных столбцов как один

У меня есть таблица, в которой храниться first_id и second_id, это айди пользователей которые между собой дружат, и мне нужно для пользователя по определенному...

128
SQL 5.7 group by по максимальному значению

SQL 5.7 group by по максимальному значению

столкнулся с проблемой при переходе MYSQL 5,6 на 5,7 выборка выбирает не корректно

147