![]() |
#2 |
Moderator
|
Я когда-то делал таблицу 'статического развертывания'. То есть - для каждой (точнее - почти каждой) положительной записи в reqTrans делал запись в этой таблице и записывал туда ссылку на номер лота строки заказов. Алгоритм был достаточно примитивный. Сначала джойним reqTrans по заказам с reqTransSetlement и с покрывающим reqTrans (производствам, закупкам, перемещениям), пишем результат в эту таблицу с уровнем 0. Потом начинаем джойнить уже саму таблицу статического развертывания с зависимыми потребностями (то есть расходными потребнтстями по переносу, производству и тп) зависимые потребности джойним через reqTransSettle с потребностями покрывающими их. И так делаем в цикле, пока в очередной итерации не выясниться что на следующем уровне ни одной новой записи в таблицы статического развертывания не добавилось ни одной записи.
Каждую ночь, после регенерации плана мы запускаем построение таблицу статического развертывания, при 2000000 чистых потребностей это занимает порядка 15-20 минут. Конечно если пользователи чего-то перепланируют днем, таблица уплывает, но в целом пользователей удалось к этому приучить. |
|
|
За это сообщение автора поблагодарили: MikeR (9). |