Mercurial > gemma
diff schema/gemma.sql @ 4126:52f7264265bb
Bulk-delete tracked entries per table
Especially when many entries in one table are tracked by one
import, this makes declining an import a lot faster.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 01 Aug 2019 17:02:09 +0200 |
parents | 7711486efaba |
children | 8c62809ea87e |
line wrap: on
line diff
--- a/schema/gemma.sql Thu Aug 01 16:46:13 2019 +0200 +++ b/schema/gemma.sql Thu Aug 01 17:02:09 2019 +0200 @@ -881,9 +881,13 @@ tmp RECORD; BEGIN FOR tmp IN - SELECT * FROM import.track_imports WHERE import_id = imp_id AND NOT deletion + SELECT relation, array_agg(key) AS keys + FROM import.track_imports + WHERE import_id = imp_id AND NOT deletion + GROUP BY relation LOOP - EXECUTE format('DELETE FROM %s WHERE id = $1', tmp.relation) USING tmp.key; + EXECUTE format('DELETE FROM %s WHERE id = ANY($1)', tmp.relation) + USING tmp.keys; END LOOP; END; $$