Замена временных таблиц в PgrSQL для оптимизации

Добрый день!
Подскажите, пожалуйста, если кто-то сталкивался.
Пытаюсь заполнить и сделать upd ate из временной таблицы в PgrSQL.
Но из-за того что и сама temp строится путем выборки из нескольких таблиц с большим количеством данных, и таблицы t, f тоже состоят из сотен тысяч строк, медленно отрабатывает.

Как можно оптимизировать эту процедуру, чтобы она эффективно отрабатывала под нагрузкой? Может ли кто-то подсказать, как, например, встроить UPDATE по сегментам или есть какие-то еще более удачные решения?

-----------

CREATE OR REPLACE FUNCTION public.F() RETURNS void

AS $$

DECLARE
sql_str text;
begin
--Создание temp
sql_str := 'DR OP TABLE IF EXISTS Temp;
CREATE temporary TABLE Temp(
Field1 uuid,
Field2 uuid,
Field3 uuid,
Field4 uuid,
Field5 text,
Field6 text,
Field7 text,
Field8 text,
Field9 int,
Field10 int,
Field11 int,
Fiels12 int);';
execute sql_str;

--Заполнение temp
sql_str := 'ins ert into Temp
sel ect distinct on (-- перечень полей --
fr om t
left join c on t.id =c.uid
--объединение нескольких таблиц с десятками тысяч строк--
where --перечень нескольких условий--;
execute sql_str;

--Заполнение таблицы t на основе temp
sql_str := 'INS ERT IN TO public.t (--перечень полей--)
sele ct --перечень полей--
from Temp;
execute sql_str;

--Обновление таблицы f на основе temp
sql_str := 'UPDATE public.f
SE T --перечень полей--
fr om Temp
wh ere --перечень условий--;
execute sql_str;

return;
END;
$$ LANGUAGE plpgsql;

ВложениеРазмер
Script.txt1.01 kb

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

1. попробовать выгрузить в

1. попробовать выгрузить в файл, а затем отдельной операцией загрузить
2. загружать ограниченный объём данных, например, по 1000 записей начиная с какого-то id и т.д.
3. возможно там много индексов и связей, которые можно отключить заранее отключать, чтобы они не строились
4. погуглить bulk load postgresql например

Снимаю вопрос. Вопрос отпал.

Снимаю вопрос. Вопрос отпал.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023