Erzeugung neuer Elemente in Array dauert zu lang

Hallo!

Ich habe eine Tabelle mit einer Array-Spalte. Das Array hat eine bestimmte Anzahl von Elementen über die ganze Spalte; es wird zur Verwaltung von Messwerten verwendet. Nun möchte ich ein neues Element in das Array einfügen und habe dafür eine pgSQL Funktion geschrieben. Ich habe diese auf einem kleinen Stück Daten getestet und sie funktioniert. Mein Array hat aber schon ca. 1000 Elemente und die Tabelle bringt insgesamt ca. 11 GB auf die Waage. Die Abfrage läuft nun schon seit 48 Stunden und ist noch nicht fertig. Ich brauche eine schnellere Methode. Könnt Ihr mir helfen? Danke!!

Hier ist mein Code:
CREATE OR REPLACE FUNCTION omen_add_sensors(“no” integer)
RETURNS void AS
$BODY$
DECLARE
x INTEGER := 1;
filler REAL[];
my_row archives%rowtype;
BEGIN
WHILE x <= no LOOP
filler := array_append(filler, NULL);
x := x + 1;
END LOOP;
FOR my_row IN
SELECT * FROM archives ORDER BY times
LOOP
UPDATE archives SET data = array_cat(my_row.data, filler) WHERE times = my_row.times;
END LOOP;
END
$BODY$

Wieso der Loop?

Nachdem Du eh alle Datensätze ändern willst, sollte doch ein:

UPDATE archives SET data = array_cat(data, filler)

das Gleiche machen (falls ich nicht irgendwas übersehen habe).

Row-By-Row Operationen sind praktisch immer eine schlechte Idee in einer relationalen Datenbank.

Vielen Dank castorp. Das hat nun in 40 Minuten mein Problem gelöst!