PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak szybko rozpakować tablicę 2d w tablicę 1d w PostgreSQL?

Funkcja, którą znalazłeś w mojej starej odpowiedzi, nie skaluje się dobrze dla dużych tablic. Nigdy nie myślałem o tablicach twojego rozmiaru, które prawdopodobnie powinny być zamiast tego zestawem (tabela).

Tak czy inaczej, ta funkcja plpgsql zastępuje tę w , do której się odwołuje odpowiedz . Wymaga Postgresa 9.1 lub nowszego.

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 szybciej w moim teście na dużej tablicy 2D w Postgresie 9.6.

STRICT aby uniknąć wyjątku dla wejścia NULL (jak skomentowane przez IamIC ):



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj wartości SQL dla jednej kolumny według innej kolumny

  2. Czy powinienem usunąć domyślne pole id podczas używania klucza podstawowego ciągu w Railsach/Postgresie?

  3. Czy zamówienie według widoku gwarantuje kolejność wyboru?

  4. PostGIS w akcji

  5. uruchamianie postgresql i pgadmin w systemie Windows bez instalacji