Amélioration de code php/mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Amélioration de code php/mysql

Re: Amélioration de code php/mysql

par devlop78 » 18 déc. 2010, 20:32

Regarde sur internet sur l'affichage progressif de contenu. C'est un truc du genre :

Code : Tout sélectionner

ob_flush(); echo str_repeat(' ', 256) . 'étape 1'; ob_flush();

Mais en un peu plus vicieux encore ... Perso, j'avais réussi, et toutes les 5 secondes, une ligne s'affichait dans mon navigateur :p

Re: Amélioration de code php/mysql

par epommate2 » 18 déc. 2010, 08:33

1. Chercher la requête la plus lente
2. Voir quel sont les index qu'il y a dessus.

Amélioration de code php/mysql

par niko94100 » 17 déc. 2010, 17:23

Bonjour à tous,

alors voilà je fais des requetes avec des jointures de table sur des tables regroupant parfois 5 millions d'entrées.
La réponse est de l'ordre de 5 minutes (ce qui est franchement bien)

J'utilise des tables temporaires pour affiner mes requêtes jusqu'à mon but final

J'ai deux questions:

1) Comment pourrais améliorer la rapidité d'execution de mes requêtes en optimisant le code ?
2) afficher une petite progression "étape 1 ok" "étape 2 ok" etc etc ....

voilà mon code :
<?php

mysql_connect("localhost", "root", "root") or die (mysql_error ());
mysql_select_db("listequalif") or die (mysql_error ());

mysql_query("TRUNCATE TABLE perfentre2dates");

mysql_query("INSERT INTO perfentre2dates
SELECT id_perf, id_nage, temps
FROM perf
WHERE date BETWEEN '2010/09/15' AND '2010/12/15'");
stop mysql_query()
echo 'étape 1/6 ok';

mysql_query("TRUNCATE TABLE relationperfiuf");
mysql_query("INSERT INTO relationperfiuf
SELECT iuf, id_nage, temps
FROM perfentre2dates
JOIN prf_comp ON perfentre2dates.id_perf = prf_comp.id_perf
GROUP BY CONCAT (iuf, id_nage, temps)");

echo 'étape 2/6 ok';

mysql_query("TRUNCATE TABLE relationannee");
mysql_query("INSERT INTO relationannee
SELECT relationperfiuf.iuf, anneenaiss, id_nage, temps
FROM relationperfiuf
JOIN licences ON relationperfiuf.iuf = licences.iuf");

echo 'étape 3/6 ok';

mysql_query("TRUNCATE TABLE resultidentcate");
mysql_query("INSERT INTO resultidentcate
SELECT iuf, id_cate, id_nage, temps
FROM relationannee
JOIN identcate
ON relationannee.annee = identcate.annee");

echo 'étape 4/6 ok';

mysql_query("TRUNCATE TABLE resultatsbrut");

mysql_query("INSERT INTO resultatsbrut
SELECT iuf, resultidentcate.id_nage, temps, tempsgrille
FROM resultidentcate
JOIN nikogrille
ON resultidentcate.id_nage = nikogrille.id_nage AND resultidentcate.id_cate = nikogrille.id_cate
WHERE temps <= tempsgrille");

echo 'étape 5/6 ok';

mysql_query("TRUNCATE TABLE resultatsniko");
mysql_query("INSERT INTO resultatsniko
SELECT resultatsbrut.iuf, nom, prenom, numclub, sexe
FROM resultatsbrut
JOIN licences
ON resultatsbrut.iuf = licences.iuf
GROUP BY CONCAT (resultatsbrut.iuf, nom, prenom)");

echo 'TERMINE';
?>

MERCI A TOUS ;)