Функцията, която намерихте в моя стар отговор, не се мащабира добре за големи масиви. Никога не съм мислил за масиви с вашия размер, които вероятно трябва да бъдат набор (таблица).
Както и да е, тази plpgsql функция замества тази в референтната отговор . Изисква Postgres 9.1 или по-нова версия.
CREATE OR REPLACE FUNCTION unnest_2d_1d(ANYARRAY, OUT a ANYARRAY)
RETURNS SETOF ANYARRAY AS
$func$
BEGIN
FOREACH a SLICE 1 IN ARRAY $1 LOOP
RETURN NEXT;
END LOOP;
END
$func$ LANGUAGE plpgsql IMMUTABLE STRICT;
40 пъти по-бързо в моя тест на голям 2d-масив в Postgres 9.6.
STRICT
за да избегнете изключение за NULL вход (като коментирано от IamIC
):