Bonjour,
de manière mensuelle et au coup par coup si les règles sont modifiées en cours d'année j'ai une table de +/- 50millions de records a mettre a jour (l'update portant sur 10 millions de lignes).
l'update étant assez complexe j'ai tout regroupé dans une fonction.
A plusieurs endroits de cette fonction j'exécute le même query basique du style:
ce que je n'aime pas c'est que ce bout de code est répeté +/- 6 fois actuellement dans ma fonction et que cela risque d'augmenter et que c'est idiot.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select champ1 into ma_var from ma_table where cle = parametre_in_de_ma_fonction
Au niveau performance a ce que j'ai vu la compilation tranforme le query en sql dynamique car le select envoyé au moteur devient
et ca ca me plait déja bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select champ1 into ma_var from ma_table where cle = :1
par contre je me demandais si je risquais une perte de performance en le passant moi-même via un execute immediate, en réalité dans le cas présent ca ne va pas changer la face du monde, mais je commence a bien aimer comprendre les différences de ce genre de subtilité.
donc en gros y a t'il une différence entre faire ceci 6x
ou alors
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select champ1 into ma_var from ma_table where cle = parametre_in_de_ma_fonction
et faire 6 execute immediate?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 qry:= 'select champ1 into ma_var from ma_table where cle = :1';
(ca ressemble vraiment a une question d'enculeur de mouche mais je me suis réellement posé la question)
merci a vous
Partager