public inbox for [email protected]  
help / color / mirror / Atom feed
From: Alain Benard <[email protected]>
To: [email protected]
Subject: variable intermédiaires
Date: Wed, 9 Aug 2023 15:38:54 +0200
Message-ID: <[email protected]> (raw)

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.



view thread (2+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: variable intermédiaires
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox