From: | Alain Benard <alain(dot)benard54(at)gmail(dot)com> |
---|---|
To: | pgsql-sql(at)lists(dot)postgresql(dot)org |
Subject: | variable intermédiaires |
Date: | 2023-08-09 13:38:54 |
Message-ID: | 40e35930-6a84-bf0e-fb91-f5db56367763@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Bonjour ,
je dispose d'une table très volumineuse dans laquelle je voudrai mettre
à jour une colonne disons 'colmaj' pour une seule année (le where
annonce près de 4 millions de lignes à mettre à jour). Ma difficulté est
de savoir comment optimiser cette mise à jour sachant que la valeur de
la colonne colmaj à enregistrer est une variable calculée à partir des
autres colonnes de cette table (et d'une autre table par jointure) et
qu'il y a différents niveaux de variables intermédiaire et qu'il sera
impossible de descendre en dessous de 3 ou 4 niveaux pour ces calculs.
Sur le principe je pourrais utiliser des With les uns à la suite des
autres et ce serait ce qu'il y a de plus lisible mais d'un point de vue
perf je sais que ça devrait être mauvais. J'essaie d'utiliser du
'LATERAL' mais je n'ai pas vraiment l'impression qu'on puisse faire plus
qu'un niveau (2 avec le LATERAL); idem avec du cross join . Enfin je
vais peut-être me résoudre à faire un ensemble de procédure stockées qui
calculeront les variables intermédiaires pour ensuite me fournir la
valeur finale me permettant une mise à jour du type
update matable
set colmaj = maprocedure(toutes les variables utiles)
where annee = 2022
Inutile de me répondre qu'il faut simplifier le calcul pour avoir moins
de niveau intermédiaire car ce calcul est dicté par des scientifiques et
que pour réduire le nombre de niveau il faudrait effectuer plusieurs
fois les mêmes calculs (ce que j'aimerai éviter) car des variables
intermédiaires sont réutilisées plusieurs fois.
Qu’en pensez-vous et est-ce que finalement la procédure stockée n'est
pas ce qu'il y a de plus efficace?
Merci par avance.
Alain.
From | Date | Subject | |
---|---|---|---|
Next Message | Guillaume Lelarge | 2023-08-09 14:17:56 | Re: variable intermédiaires |
Previous Message | Erik Brandsberg | 2023-08-08 22:17:21 | Re: Very odd message |