Рекомендую оценить, что хуже для данного конкретного проекта, работать:
только с периодами - тогда, чтобы получить список свободных интервалов потребуется сформировать список всех возможных интервалов для заданного диапазона (способ зависит от версии, рекомендую посмотреть в сторону cte-запросов) с длительностью и перебрать занятые, исключая их из списка всех
с таблицей интервалов - увеличивает потенциальный объём данных, но существенно упрощает получение списка свободных
Т.е. фактически приходим к вопросу о границах проекта, т.к. узким местом является ЦП+ОЗУ или диск.
PS: по моему опыту, получать список свободных интервалов будут очень часто, а создание новых периодов - гораздо реже. К тому же дисковое место во многих проектах не выделяется как существенно ограничение.
Вы описали абстрактный процесс, но просите ссылку на конкретный инструмент решения проблемы (хотя сами уже пользуетесь одним).
Рекомендую для себя составьте этапы процесса по пунктам. Выделите те, которые не знаете как решить с имеющимися средствами и укажите их. Вероятно решением будет использование комплекса программ.
Т.е. фактически приходим к вопросу о границах проекта, т.к. узким местом является ЦП+ОЗУ или диск.
PS: по моему опыту, получать список свободных интервалов будут очень часто, а создание новых периодов - гораздо реже. К тому же дисковое место во многих проектах не выделяется как существенно ограничение.