Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pb de performance requete sql [ Archives / Problème avec une requête ] (loic72)

mercredi 3 mai 2006 à 15:09:29 | pb de performance requete sql

loic72

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)

mercredi 3 mai 2006 à 15:38:58 | Re : pb de performance requete sql

Ry_Yo

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


mercredi 3 mai 2006 à 16:09:22 | Re : pb de performance requete sql

loic72

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?

mercredi 3 mai 2006 à 16:14:43 | Re : pb de performance requete sql

Mindiell

Ca :
UPDATE ajustement SET ajus_difference =  0
WHERE (ajus_montant_alloue-ajus_montant_alloue_prec) <= 0

puis :
UPDATE ajustement SET ajus_difference = (ajus_montant_alloue-ajus_montant_alloue_prec)
WHERE ajus_difference > 0

Ca t'évitera le case...


Mindiell Software

mercredi 3 mai 2006 à 16:18:47 | Re : pb de performance requete sql

Mindiell

pour la 2eme :
WHERE ajus_difference <> 0
c'est mieux en fait... ^^

Mindiell Software

mercredi 3 mai 2006 à 16:26:02 | Re : pb de performance requete sql

loic72

Réponse acceptée !
euh... non lol, pour la deuxième c'etait ça: WHERE (ajus_montant_alloue-ajus_montant_alloue_prec) > 0 ajus_difference n'est pas encore mis à jour, n'existe pô MERCI beaucoup ! +

mercredi 3 mai 2006 à 16:35:55 | Re : pb de performance requete sql

Ry_Yo

Juste pour revenir sur ma syntaxe,
Tu m'as mis le doute alors j'ai vérifié,  elle fonctionne sous SQLserver2000

mercredi 3 mai 2006 à 16:36:32 | Re : pb de performance requete sql

fabrice69

Administrateur CodeS-SourceS
Bonjour,
Votre problème de lenteur ne vient pas du moteur SQL, mais de la boucle que vous faite en ASP3 sur vos 85000 éléments.

Vous pouvez faire votre Update directement sur le moteur SQL.


Romelard Fabrice (Alias F___)

mercredi 3 mai 2006 à 16:40:53 | Re : pb de performance requete sql

loic72

ok merci beaucoup pour vos conseils à vous tous.



Cette discussion est classé dans : rs, id, difference, ajus, ajustement


Répondre à ce message

Sujets en rapport avec ce message

if dans une procédure stocké ? [ par jesusonline ] Bonjour, je ne connais pas encore SQLj'ai une table articles qui a un champ ID et je voudrais une fonction stocké qui prend en paramètre un ID et qui Requete utilisant un IF (?) [ par Gamer_man ] Bonjour :)J'ai un petit probleme avec une requete...J'explique un peu :Sur mon site, il est possible de poster des commentaires en etant membre ou en 2 liens entre 2 tables [ par fstyle ] Bonjour/soirJe suis en train de créer un système pour gérer ma comptabilité ...et je suis devant un problème !Dans mon mld, il y a 2 tables : t_compta Fonction Difference (soundex) SQL server [ par oluha ] BonjourJ'ai besoin d'utiliser la fonction Difference (qui se base sur le soundex) mais je trouve qu'elle n'est pas assez précise du fait que le sounde Faire plusieurs if dans un procedure stockee [ par chris81 ] bonjour,comment puis je faire pour verifier plusiseurs if dans la meme procedure stockee c'est a direif not exist(SELECT Id FROM...) et if not exists( Select sans doublon avec date la plus recente [ par ironnyc ] Bonjour a tous!je cherche a faire une requete Select avec une base MySql sur la table suivante: #Table "historique"+-----+-------------+------------+| Tri, comment??? [ par Fildomen ] Salut j'ai par exemple une table ou sont stocké des gens avec leur id (TGens), et une autre qui contient les noms de leur enfant (TEnfants)  (id du pè 3 tables 1 requête [ par kclito ] bonjours, (j'avoue que je ne savais pas si je devais mettre ça dans le forum php ou sql ....) Je vous explique mon problème J'ai 3 tables CATEGORIE requete SQL [ par djodjo07 ] Je cherche une requete SQL pour trier mes ID.. en fait j'aimerais par exemple récupérer des données a partir de l'ID 40 ! Je débute ! Merci une requete qui me casse la tête [ par chmouette ] Salut les gens!Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :+-------------------------+ !            MaTable  &nbs


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,22 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.