BUG #8495: PLSQL PG Terrible performance by using two-dimensional arrays.
От | m.manso@upm.es |
---|---|
Тема | BUG #8495: PLSQL PG Terrible performance by using two-dimensional arrays. |
Дата | |
Msg-id | E1VQuta-0007Y4-Ip@wrigleys.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #8495: PLSQL PG Terrible performance by using
two-dimensional arrays.
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 8495 Logged by: Miguel A. Manso Callejo Email address: m.manso@upm.es PostgreSQL version: 9.1.9 Operating system: Ubuntu 12.04LTS Description: I'm trying to random access to a 2-dimensional array of double precision numbers. When range of the array increase, the performance decrease quickly. A simple function as: CREATE OR REPLACE FUNCTION fill_2d_array( rows integer, cols integer) RETURNS integer AS $BODY$ DECLARE img double precision[][]; i integer; j integer; cont integer; BEGIN img := ARRAY( SELECT 0 FROM generate_series(1, rows * cols) ) ; cont:= 0; For i IN 1..rows LOOP For j IN 1..cols LOOP img[i * cols + j] := (i * cols + j)::double precision; cont := cont + 1; END LOOP; END LOOP; return cont; END; $BODY$ LANGUAGE plpgsql; ALTER FUNCTION fill_2d_array( integer, integer) OWNER TO postgres; when call the function with 700 rows & 1200 cols (explain (analyze,buffers) select fill_2d_array(700,1200); ) the time consumed is about 50minutes. What is bad? what i'm doing bad? Thank you very much.
В списке pgsql-bugs по дате отправления: