La función que encontró en mi respuesta anterior no se escala bien para matrices grandes. Nunca pensé en matrices de tu tamaño, que probablemente deberían ser un conjunto (una tabla) en su lugar.
Sea como fuere, esta función plpgsql reemplaza a la del referenciado responder . Requiere Postgres 9.1 o posterior.
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 veces más rápido en mi prueba en una gran matriz 2d en Postgres 9.6.
STRICT
para evitar una excepción para la entrada NULL (como comentado por IamIC
):