UPDATE avec clause à NULL => Comment ne pas dégrader performance ?
Bonjour,
J'aimerais savoir s'il y a un moyen de ne pas plomber les performances lorsque qu'on fait un update où certaines clauses du WHERE sont à NULL.
Je m'explique :
Ce premier est update est très rapide mais si une des colonnes est a null (et donc sa valeur recc* également) la ligne n'est pas mise à jour :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
update TMEEVP
set numseq = recc0
where business_unit = recc1
and datsitu = recc2
and prdet=recc3
and prifi=recc4
and foreign_currency = recc5
and prcsv=recc6
and prmat=recc7
and prdvn=recc8
and prflx = recc9
and prsem= recc10
and paemt = recc11; |
Pour info, Les valeurs recc* sont retournées par un curseur
Alors que celui met à jour l'exhaustivité des lignes mais avec des performances très dégradées (business_unit et datsitu ne peuvent etre null):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
update TMEEVP
set numseq = recc0
where business_unit = recc1
and datsitu = recc2
and nvl(prdet, 'A')=nvl(recc3, 'A')
and nvl(prifi, 'A')=nvl(recc4, 'A')
and nvl(foreign_currency, 'A') = nvl(recc5, 'A')
and nvl(prcsv, 'A')=nvl(recc6, 'A')
and nvl(prmat, 'A')=nvl(recc7, 'A')
and nvl(prdvn, 'A')=nvl(recc8, 'A')
and nvl(prflx, 'A') = nvl(recc9, 'A')
and nvl(prsem, 'A')= nvl(recc10, 'A')
and nvl(paemt, 'A') = nvl(recc11, 'A'); |
Connaissez-vous une solution à ce problème ?
D'avance merci