begin process at 2012 02 08 23:06:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

pb de performance requete sql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb de performance requete sql

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ée dans : rs, id, difference, ajus, ajustement


Répondre à ce message

Sujets en rapport avec ce message

3 requetes en 1...pour debutant [ par lld2308 ] BonjourJ'ai une table avec les champs 'ID','cours' et 'diff'.pour calculer la difference entre le cours de 2 id successifs puis updater la table, je f Besoin d'aide avec SELECT [ par dlcqty63j ] Bonjour,j'ai une requête : select PARAM, VALEUR, ID_MESURE  from TABLE_MESURE where PARAM='Courant' OR PARAM='Déplacement'order by PARAMETRE, ID_MESUR Jointure sur 3 tables [ par djagger ] Bonjour,je galère depuis quelques temps sur une requete de jointure.Voici un exemple vite fait :- une table VOITURE (id ,  immatriculation)- une table regrouper des enregistrements dans un time stamp [ par grimat ] Bonjour,Je souhaite réaliser des stat de vente de mon site d ecommerce à une maille quotidienne.J'ai créé une requete pour lister les order_id ainsi q insert with connect in PL/SQL [ par peaceof ] slt a tous ,j'ai pas reussi a finaliser un trigger "create or replace trigger agence after insert on agencefor each rowBeginconnect as kairouan/sa@tel Insertion de donnees dans une table à partir de données de la même table [ par Mynie ] Bonjour !Bloquée depuis des heures sur le problème suivant :J'ai dans ma table 1 une série d'enregistrement que je dois dupliquer dans la même table m Select avec résultat induit [ par Djzlouk ] Bonjour les SQLeux :)J'ai un petit souci avec 2 tables. Je vous explique.Table Prevu :IdUserTempsTable Realise :IdUserTempsJ'ai a SELECT multitable [ par bergasol ] Bonjour, comment faire pour selectionner une donnée dans une de mes table qui s'en refere a une autre.    Ma premiere table "facture" contient une don SELECT sur une table avec clé étrangère en boucle sur une table [ par Sieurcoug ] Bonjour,Je vous expose mon souci qui va vous paraître simple (vu mon niveau en SQL ;)) :Voilà, j'ai besoin de lister les enregistrements de la table S Problème de concordance avec un champ [ par canibale ] Bonjour, je fais appel à vous car je code actuellement un système de messages privés.cependant j'ai un problème, je teste si le message à été supprimé


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales