私の古い答えで見つけた関数は、大きな配列にはうまくスケーリングしません。私はあなたのサイズの配列を考えたことはありませんでした。おそらく代わりにセット(テーブル)であるはずです。
とはいえ、このplpgsql関数は、参照されている関数を置き換えます。答え 。 Postgres9.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;
Postgres9.6の大きな2Dアレイでのテストでは40倍高速です。
STRICT
NULL入力の例外を回避するため(IamICによるコメント
):