очень много джоинов.
Вопрос стоит об оптимизации времени выполнения этой view. В данный момент, я пришел к тому, что материализовал ее, но есть проблема: в момент рефреша невозможно получить данные из-за этого приходится ждать, пока представление не обновится полностью.
Какие есть решения этой проблемы?
Если добавить CONCURRENTLY то селекты не будут лочиться.
это на каждый атрибут по джойну? я EAV собираю кросс-джойном в JSONB объект. тогда кол-во джойнов небольшое и не зависит от кол-ва атрибутов. выходит что-то типа джойн по дереву объектов вверх, чтоб обойти родителей, потом на сами атрибуты, их значения и ещё один на статические значения (типа менюшек). на объёме в 200+К работает приемлемо быстро и сразу отображает что надо — не требуется ждать обновления матвьюхи =)
Да, только судя по документации, время обновления при этом страдает значительно.
Для каждого энтити на каждый тип атрибута, атрибут айтем, вельютайп, велью, велью физ, энтити тайп
вроде всё так же. а выход данных в каком виде? на одну энтити по куче рядов с атрибутами и их значениями?
В документации насчёт "значительно" ничего не сказано. А на небольшом количестве строк может быть даже быстрее. На практике я не вижу разницы при объёме в несколько сотен тысяч строк.
я бы таки попробовал делать по одному ряду на энтити, а все атрибуты и их значения заворачивать в JSONB
Хорошо, спасибо за наводку. Буду пробовать.
Обсуждают сегодня