La fonction que vous avez trouvée dans mon ancienne réponse ne s'adapte pas bien aux grands tableaux. Je n'ai jamais pensé à des tableaux de votre taille, qui devraient probablement être un ensemble (une table) à la place.
Quoi qu'il en soit, cette fonction plpgsql remplace celle du référencé répondre . Nécessite Postgres 9.1 ou version ultérieure.
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 fois plus rapide dans mon test sur une grande baie 2d dans Postgres 9.6.
STRICT
pour éviter une exception pour l'entrée NULL (comme commenté par IamIC
):