From: | Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr> |
---|---|
To: | Paul Poirel <poirelpa(at)gmail(dot)com> |
Cc: | Pgsql Fr Generale <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: UPDATE de plus en plus long |
Date: | 2013-11-19 13:47:11 |
Message-ID: | m2siusv6zk.fsf@2ndQuadrant.fr |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Paul Poirel <poirelpa(at)gmail(dot)com> writes:
> Mon problème est que cette boucle for est en réalité une fonction sur un
> curseur. Il m'est impossible de découper ce traitement en plusieurs
> transactions : il faut qu'un seul appel à la fonction principale déroule
> tous les traitements.
1. les curseurs fonctionnent aussi dans une session :
http://www.postgresql.org/docs/9.3/interactive/sql-declare.html
WITH HOLD specifies that the cursor can continue to be used after
the transaction that created it successfully commits.
2. le traitement en question doit-il créer autant de tables ?
Cela me semble étonnant, est-il possible d'utiliser une seule table
temporaire et de faire un TRUNCATE en fin de traitement ?
Ou mieux, d'exprimer le traitement en SQL plutôt qu'en procédural ?
Note : UPDATE sait travailler sur une jointure.
--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
--
Envoi via la liste pgsql-fr-generale (pgsql-fr-generale(at)postgresql(dot)org)
From | Date | Subject | |
---|---|---|---|
Next Message | Paul Poirel | 2013-11-19 13:51:10 | Re: UPDATE de plus en plus long |
Previous Message | Michel Payan | 2013-11-19 13:42:59 | Re: UPDATE de plus en plus long |