Открыть список
Как стать автором
Обновить

Комментарии 6

Интересное следствие получили, вместо задачи «склеить» два массива, просто зададим константу,
может, так еще быстрее:
select * 
from (values (1,5),(2,6),(3,null),(4,null))t(v1,v2)

Сможете передать содержимое VALUES через пару входящих параметров?

Если трактовать проблему так, то зачем передавать в запрос два массива для простого «склеить», это же задача одного цикла,
а откуда передаем-то?

Почему же "для простого"? Можно представить это началом сложного prepared statement, в который хочется передать матрицу не вполне фиксированного размера в качестве параметра.
Для этого существует несколько способов разной проблемности, но про это будет отдельная статья.

Думаю «адекватнее» было бы работать с массивами там, где их можно индексировать, и тогда эта проблема «склеить» совсем не проблема,
как будто статья демонстрирует то, что запросами делать совсем не стоит…

Нужны матрицы — временные таблицы,
при чем тут «склеить» и в заголовке «ДЖОИН».

Временная таблица в PG — это достаточно дорогое решение для передачи параметров в часто исполняемый запрос, потому что приводит к созданию дополнительных записей в pg_class, pg_attribute, pg_depend,… Они от этого распухают и потом плохо себя чувствуют.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Информация

Дата основания
Местоположение
Россия
Сайт
sbis.ru
Численность
1 001–5 000 человек
Дата регистрации

Блог на Хабре