Equivalent MySQL

Equivalent MySQL - SQL/NoSQL - Programmation

Marsh Posté le 24-06-2005 à 06:25:57    

Code :
  1. <?php
  2. $mysqli = new mysqli("localhost", "root", "****", "***_migrate" );
  3. $result = $mysqli->query("SELECT `DATE` AS `date`, ROLL_NO  AS roll, EXPO_NO AS `expo` FROM photocatnew ORDER BY ROW_ID" );
  4. while ($obj = $result->fetch_object()) {
  5. set_time_limit(60*2);
  6.      
  7.        $new_query="UPDATE pl_photo SET date='".$obj->date."' WHERE roll_no='".$obj->roll."' AND exposure='".$obj->expo."';";
  8.      
  9.        if($mysqli->query($new_query)) {
  10.  printf("requete :<b>%s</b> .\n<br />", $new_query);
  11.  printf("%d enregistrements modifies.\n<br />", $mysqli->affected_rows);
  12.        } else printf("Erreur : %s\n", $mysqli->error);
  13. }
  14. ?>


 
Pour faire des updates sur une table j'execute ce script PHP. Ma table comporte 130 000 records et, l'execution du script prend plusisuers heures ....  :sweat:  
Je cherche un equivalent MySQL. Avez vous des pistes? merci :)


Message édité par simogeo le 24-06-2005 à 06:26:32
Reply

Marsh Posté le 24-06-2005 à 06:25:57   

Reply

Marsh Posté le 24-06-2005 à 06:40:40    

simogeo a écrit :

Code :
  1. <?php
  2. $mysqli = new mysqli("localhost", "root", "****", "***_migrate" );
  3. $result = $mysqli->query("SELECT `DATE` AS `date`, ROLL_NO  AS roll, EXPO_NO AS `expo` FROM photocatnew ORDER BY ROW_ID" );
  4. while ($obj = $result->fetch_object()) {
  5. set_time_limit(60*2);
  6.      
  7.        $new_query="UPDATE pl_photo SET date='".$obj->date."' WHERE roll_no='".$obj->roll."' AND exposure='".$obj->expo."';";
  8.      
  9.        if($mysqli->query($new_query)) {
  10.  printf("requete :<b>%s</b> .\n<br />", $new_query);
  11.  printf("%d enregistrements modifies.\n<br />", $mysqli->affected_rows);
  12.        } else printf("Erreur : %s\n", $mysqli->error);
  13. }
  14. ?>


 
Pour faire des updates sur une table j'execute ce script PHP. Ma table comporte 130 000 records et, l'execution du script prend plusisuers heures ....  :sweat:  
Je cherche un equivalent MySQL. Avez vous des pistes? merci :)


essaies de rajouter un DISTINCT à tout hasard dans ton premier SELECT pour voir
pas sur que ça améliore bcp les choses mais sont on jamais  [:spamafote]
C'est pas faisable en une seule requete UPDATE ton truc là ? m'en rappelle plus, mes souvenirs de SQL sont loin :o
 
EDIT : As tu pensé à mettre un index sur (roll_no,exposure) dans ta table pl_photo ?   Fais gaffe, peux y'avoir des effets secondaires (chute de perfs) dans d'autres requetes ou programmes qui modifient bcp ces deux colonnes par contre, à toi de voir :o
 
EDIT2 :
Un truc genre  

UPDATE pl_photo
  SET pl_photo.date=photocatnew.DATE
FROM photocatnew
WHERE pl_photo.roll_no=photocatnew.ROLL_NO AND pl_photo.exposure=photocatnew.EXPO_NO

ça irait pas ? :o    vérifies la syntaxe, car c'est très loin tout ça maintenant pour moi   :sweat:


Message édité par Zzozo le 24-06-2005 à 06:49:52

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 24-06-2005 à 06:47:00    

yop Zzozo
Merci de participation.
 
Le distinct ne changerai rien. Cette premiere requete s'effectue tres tres vite. C'est les UPDATE qui sont plus long
Et les index accelerent les SELECT mais ralentissent INSERT et UPDATE .. donc ce n'est pas une bonne idee.
 
merci quand meme  :D

Reply

Marsh Posté le 24-06-2005 à 06:50:43    

simogeo a écrit :

yop Zzozo
Merci de participation.
 
Le distinct ne changerai rien. Cette premiere requete s'effectue tres tres vite. C'est les UPDATE qui sont plus long
Et les index accelerent les SELECT mais ralentissent INSERT et UPDATE .. donc ce n'est pas une bonne idee.
 
merci quand meme  :D


Regardes au dessus de nouveau  :o


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 24-06-2005 à 06:52:36    

simogeo a écrit :

yop Zzozo
Merci de participation.
 
Le distinct ne changerai rien. Cette premiere requete s'effectue tres tres vite. C'est les UPDATE qui sont plus long
Et les index accelerent les SELECT mais ralentissent INSERT et UPDATE .. donc ce n'est pas une bonne idee.
 
merci quand meme  :D


la table à 130 000 enregistrements, c'est celle que tu updates ? :o
si oui, vérifies que tu te tapes pas un tablescan à chaque update sinon ca va pas aller vite, c'est clair :D


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 24-06-2005 à 07:08:33    

Tiens, un peu de litérrature [:dao]
http://dev.mysql.com/doc/mysql/en/ [...] -scan.html
Penses à regarder tous les topics sur la gauche de la page, ils peuvent t'intéresser [:dao]
 
Allez, bonne journée et amuses toi bien surtout [:klem3i1]


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 24-06-2005 à 07:11:30    

Zzozo a écrit :

la table à 130 000 enregistrements, c'est celle que tu updates ? :o
si oui, vérifies que tu te tapes pas un tablescan à chaque update sinon ca va pas aller vite, c'est clair :D


oui.
Comment je peux savoir s'il fait un tablescan ? je ne peux pas faire de EXPLAIN sur un UPDATE :/

Reply

Marsh Posté le 24-06-2005 à 07:22:01    

Code :
  1. UPDATE `pl_photo`, `photocatnew` SET `pl_photo`.`date`=`photocatnew`.`DATE`
  2. WHERE `pl_photo`.`roll_no`=`photocatnew`.`ROLL_NO` AND `pl_photo`.`exposure`=`photocatnew`.`EXPO_NO`


 
[:jar jar]
 
 
le dauphin saute et tressaute ...... je ne sais pas combien de temps ca va prendre .. mais j'espere que ca va etre plus rapide que via mon precedent script [:dawa]
 
merci zzozo  [:john keats]

Reply

Marsh Posté le 24-06-2005 à 07:23:13    

simogeo a écrit :

oui.
Comment je peux savoir s'il fait un tablescan ? je ne peux pas faire de EXPLAIN sur un UPDATE :/


Nan mais tu peux le faire sur le SELECT équivalent :o
dans le SELECT tu vas chercher la/les colonnes que tu modifies dans le SET et tu mets la même clause WHERE que celle de ton UPDATE  [:dao]


Message édité par Zzozo le 24-06-2005 à 07:23:47

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 24-06-2005 à 07:24:57    

simogeo a écrit :

Code :
  1. UPDATE `pl_photo`, `photocatnew` SET `pl_photo`.`date`=`photocatnew`.`DATE`
  2. WHERE `pl_photo`.`roll_no`=`photocatnew`.`ROLL_NO` AND `pl_photo`.`exposure`=`photocatnew`.`EXPO_NO`


 
[:jar jar]
 
 
le dauphin saute et tressaute ...... je ne sais pas combien de temps ca va prendre .. mais j'espere que ca va etre plus rapide que via mon precedent script [:dawa]
 
merci zzozo  [:john keats]


Ouais  ... y'a pas marqué Flipper sur mon front, ni Oum  d'ailleurs  [:dao]


Message édité par Zzozo le 24-06-2005 à 07:25:21

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 24-06-2005 à 07:24:57   

Reply

Marsh Posté le 24-06-2005 à 07:35:43    

je parlais du dauphin de mysql  [:newidk]  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed