Написание хранимой процедуры 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 и новее. Для более старых версий - схожим образом через механизм наследования таблиц.