cs_loic72
Messages postés18Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention 1 août 2007
-
3 mai 2006 à 15:09
cs_loic72
Messages postés18Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention 1 août 2007
-
3 mai 2006 à 16:40
Bonjour,
j'ai un problème de temps d'exécution de requète et je vois pas d'ou ça viend.
req = "select ajus_id,ajus_montant_alloue,ajus_montant_alloue_prec from ajustement"
set rs = connexion.execute(req)
while not rs.eof
id_ajus=rs.fields(0)
difference = rs.fields(1)-rs.fields(2)
if difference<0 then
difference=0
end if
req2 = "update ajustement set ajustement.ajus_difference='"&difference&"' where ajustement.ajus_id="&id_ajus&""
connexion.execute(req2)
rs.movenext
wend
rs.close
La table "ajustement " fait 85.000 entrées; savez-vous pourquoi SVP ça met autant de temps?
Est-ce du au fait que je modifie la ligne que je lui en meme temps? si c'est ça alors comment faire au mieux?
(pour info, je code en ASP)
cs_Ry_Yo
Messages postés9Date d'inscriptionjeudi 6 avril 2006StatutMembreDernière intervention 3 mai 20061 3 mai 2006 à 15:38
Je pense qu'il est préférable de faire un update par lot que 85.000 update....
la requête devrait être quelque chose de ce genre :
UPDATE ajustement SET ajus_difference = CASE WHEN
ajus_montant_alloue-ajus_montant_alloue_prec > 0 THEN
ajus_montant_alloue-ajus_montant_alloue_prec ELSE 0 END
Une seule requete qui est normalement plus rapide que tes 85.000 update
cs_loic72
Messages postés18Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention 1 août 20071 3 mai 2006 à 16:09
je ne connaissais pas cette facon de prcéder mais c'est net que ça doit aller plus vite.
seulement la syntaxe n'est pas bonne apparement. j'ai une erreur
tu es sur que c'est comme ça END CASE à la fin rien n'y fait.
la condition ne doit-elle pas se mettre entre le case et le when?