powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы в PgrSQL, оптимизация
6 сообщений из 6, страница 1 из 1
Временные таблицы в PgrSQL, оптимизация
    #40100343
NatM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Подскажите, пожалуйста, если кто-то сталкивался.
Пытаюсь заполнить и сделать 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;
...
Рейтинг: 0 / 0
Временные таблицы в PgrSQL, оптимизация
    #40100346
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NatM,

1)после заполнения временной таблицы надо её analyze сделать перед использованием

2)поднять temp_buffers/work_mem чтобы временные файлы не писались.

3)сделат руками запросы из хранимки через explain (analyze,costs,buffers,timing) и посмотреть где тормозит
после чего приходить с конкретными планами и описанием проблем(ы).


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Временные таблицы в PgrSQL, оптимизация
    #40100354
NatM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имелось в виду, как можно вообще уйти от использования временных таблиц и заменить их на что-то другое. Тормозят они не из-за кривого селекта в запросе, а из-за того что сам по себе, видимо, подход с временными таблицами не лучший, если данных много.
...
Рейтинг: 0 / 0
Временные таблицы в PgrSQL, оптимизация
    #40100356
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NatM
Имелось в виду, как можно вообще уйти от использования временных таблиц и заменить их на что-то другое. Тормозят они не из-за кривого селекта в запросе, а из-за того что сам по себе, видимо, подход с временными таблицами не лучший, если данных много.


Вот далеко не факт что проблема в временных таблицах...
Без explain данных не узнать.

А так через writable CTE это всё в 1 запрос пишется легко. (но сильно не факт что станет быстрее заметно).

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Временные таблицы в PgrSQL, оптимизация
    #40100496
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NatM
Имелось в виду, как можно вообще уйти от использования временных таблиц и заменить их на что-то другое. Тормозят они не из-за кривого селекта в запросе, а из-за того что сам по себе, видимо, подход с временными таблицами не лучший, если данных много.


не сказжу за постгрес
но в мс-скл мне как раз нравплось разбивать мегасложные запросы на несколько использовая темп. табилцы
подкрутьи было проще если что - да и ошибку найти
и по времени посмотерть где тормозить

возможно пробелма тут не в этом
а то что запросы формируются динамически - и соответсвенно план м.б разным
короче без кодов конкретных тормознутыз запросов - дальше гадать только
...
Рейтинг: 0 / 0
Временные таблицы в PgrSQL, оптимизация
    #40106725
NatM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос отпал. Решен.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы в PgrSQL, оптимизация
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]