Den funktion, du fandt i mit gamle svar, kan ikke skaleres godt til store arrays. Jeg har aldrig tænkt på arrays din størrelse, som nok burde være et sæt (et bord) i stedet for.
Hvorom alting er, så erstatter denne plpgsql-funktion den i henviste svar . Kræver Postgres 9.1 eller nyere.
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;
40x hurtigere i min test på et stort 2d-array i Postgres 9.6.
STRICT
for at undgå en undtagelse for NULL-input (som kommenteret af IamIC
):