sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで2D配列を1D配列にすばやくアンネストする方法は?

    私の古い答えで見つけた関数は、大きな配列にはうまくスケーリングしません。私はあなたのサイズの配列を考えたことはありませんでした。おそらく代わりにセット(テーブル)であるはずです。

    とはいえ、この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によるコメント ):



    1. SQLクエリ-3つ以上の重複がある場合、重複を削除しますか?

    2. MSSQL2008R2の集計関数なしのピボット

    3. MySQLサーバーに\xampp\tmpフォルダーへの書き込み権限を持たせる

    4. PL /SQLストアドプロシージャはカーソルをVBAADODB.RecordSetに出力しますか?