From: | Michel Payan <michel(dot)payan(at)gmail(dot)com> |
---|---|
To: | Paul Poirel <poirelpa(at)gmail(dot)com> |
Cc: | Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr>, Pgsql Fr Generale <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: UPDATE de plus en plus long |
Date: | 2013-11-19 14:03:10 |
Message-ID: | CAPFLA-MZBeqwBefESHOBvAKERr1aoaHnO=ty-7MZ8AEOEmeUwQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Tu peux peut-être passer par une variable compteur et faire un update
uniquement en fin de traitement ?
Le 19 novembre 2013 14:57, Paul Poirel <poirelpa(at)gmail(dot)com> a écrit :
>
>> 1. les curseurs fonctionnent aussi dans une session :
>
> Ce curseur n'est qu'une étape d'un traitement lancé par une fonction
> PL/PGSQL. Je n'ai pas le choix de terminer la transaction.
>
>>
>>
>> 2. le traitement en question doit-il créer autant de tables ?
>>
> Dans mon exemple, il n'y a qu'une seule table avec une seule ligne.
> Seul l'UPDATE est répété.
>
>> Cela me semble étonnant, est-il possible d'utiliser une seule table
>> temporaire et de faire un TRUNCATE en fin de traitement ?
>
> La valeur mise à jour est utile après la fin du traitement.
>
>>
>> Ou mieux, d'exprimer le traitement en SQL plutôt qu'en procédural ?
>
> Ce n'est malheureusement pas une option.
>
>>
>> Note : UPDATE sait travailler sur une jointure.
>>
> cf. ma réponse précédente qui donne plus de détails sur le fonctionnement
> réel : cet update ne fait qu'incrémenter un champ, à la manière d'une
> séquence. Je ne peux pas le sortir de la boucle.
>
> Merci pour votre aide
>
> Paul
>
--
*dbSQWare |* www.dbsqware.com *|* *Exploitez vos bases de données en toute
sérénité …*
From | Date | Subject | |
---|---|---|---|
Next Message | Paul Poirel | 2013-11-19 14:09:55 | Re: UPDATE de plus en plus long |
Previous Message | Paul Poirel | 2013-11-19 13:57:11 | Re: UPDATE de plus en plus long |