Написание хранимой процедуры PostgreSQL, обьединяющей таблицы разделенных по дате

Есть триггер, который создает таблицы по датам (каждый день новая таблица) поступаюших данных. Нужно написать процедуру, которая принимает два параметра: начало и конец даты, затем обьединяющая данные из этих таблиц, соответствующих промежутку этих дат. Например, есть таблицы с 01.01.2020 по 20.01.2020. Поступает запрос на процедуру с 03.01.2020 по 05.01.2020, она должна обьединить таблицы с 03.01.2020 по 05.01.2020 и вернуть его.


Ответы (1 шт):

Автор решения: Мелкий

Зачем вам функция? Вы как-то странно пытаетесь переизобрести партицирование. Используйте собственно партицирование.

Предположим у вас есть таблица something_20200218 с полем created_at timestamp с датой. В этой таблице лежат данные только за 2020-02-18

create table something (like something_20200218) partitioning by range (created_at);
alter table something attach partition something_20200218 
   for values from ('2020-02-18') to ('2020-02-19');

Аналогичными attach partition подключаете остальные разделы.

select .. from something where created_at >= '2020-01-03' and created_at < '2020-01-06'

И всё, никакие функции вам не нужны. Даже не упоминая о разнице в производительности.

PS: postgresql 10 и новее. Для более старых версий - схожим образом через механизм наследования таблиц.

→ Ссылка