| |
Savez-vous bien utiliser les outils de mesure d'audience ? Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ? Savez-vous utiliser les bons outils pour booster votre taux de transformation ? La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions ! ===> Informations et inscriptions.
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
clemumm Nouveau WRInaute
Inscrit le: 03 Déc 2007 Messages: 18
|
Posté le : Dim Fév 03, 2008 20:29 Sujet du message: Mysql :requete lourde comment alleger... |
|
|
Bonjour,
J'ai un site avec une génération de sitemap basé sur l'interprétation de ma base de données. Jusqu'a aujourd'hui je listais mes fiches techniques en parcourant la table ou sont stocké les noms des bateaux (avec une boucle while). J'ai rajouté la possibilité de comparer 2 bateaux et j'aimerais bien integrer ces comparatifs au sitemap le problème c'est que la requète devient lourde (double boucle while).
Première solution => pendant mon listing de fiches je fait un "dictionnaire" du genre marque[bateau1] = nomdelamarque, comme ça plus besoin d'ouvrir la BDD pendant la "double boucle".
ça marche pour l'instant mais avec plus de bateaux j'ai peur que ça coince... comment reduire la charge du serveur (effacer le resultat des requetes? faire en plusieures étapes?...).
Merci d'avance
Clément |
|
| |
|
 |
FlorentP WRInaute occasionnel

Inscrit le: 25 Juin 2005 Messages: 145
|
Posté le : Dim Fév 03, 2008 21:12 Sujet du message: Mysql :requete lourde comment alleger... |
|
|
| C'est quoi tes requetes et le schéma de tes tables ? |
|
| |
|
 |
clemumm Nouveau WRInaute
Inscrit le: 03 Déc 2007 Messages: 18
|
Posté le : Dim Fév 03, 2008 21:40 Sujet du message: Mysql :requete lourde comment alleger... |
|
|
Dans un premier temp je liste le fiches techniques et je créé les dictionnaires de marque et de modèle a chaque fois avec des boucles sur les resultats des requetes
| Code: |
//On liste les marques
$reqmarque = mysql_query("SELECT * FROM $tablemarque order by id ASC") or die ("erreur requete zz");
while( $marque = mysql_fetch_array ($reqmarque)){
$idmarque = $marque["id"];
$tmarque[$idmarque] = $marque[$lang];
}
//On liste les voiliers
$reqgenre = mysql_query("SELECT id,marque,dernieremod,modele,genre,type FROM $tablebateau order by id ASC") or die ("erreur requete zz");
while( $genre = mysql_fetch_array ($reqgenre)){
$idmodele = $genre["id"];
$idmarque = $genre["marque"];
$lastmod = str_replace("/","",$genre["dernieremod"]);
$derniermod[$idmodele] = $lastmod;
$genremod[$idmodele] = $genre["modele"];
$marquemod[$idmodele] = $genre["marque"];
$argref = carspec($tmarque[$idmarque].$genre["modele"]);
$ttext = $ttext.'<url><loc>'.$url.'voiliers-'.$lang.'/'.$idmodele.'-'.$argref.'.html</loc><lastmod>'.$lastmod.'</lastmod></url>';
if(datetrans($lastmod) > datetrans($lastmodmarque[$idmarque])){$lastmodmarque[$idmarque] = $lastmod;}else{}
$idtemp = $genre["type"];
if(datetrans($lastmod) > datetrans($lastmodtype[$idtemp])){$lastmodtype[$idtemp] = $lastmod;}else{}
$idtemp = $genre["genre"];
if(datetrans($lastmod) > datetrans($lastmodgenre[$idtemp])){$lastmodgenre[$idtemp] = $lastmod;}else{}
if(datetrans($lastmod) > datetrans($lastmodmax)){$lastmodmax = $lastmod;}else{}
}
|
Ensuite dans un second temp je fais une boucle sur le dictionnaire et une seconde a l'intérieur encore une fois sur le dictionnaire.
| Code: |
$reqgenre = mysql_query("SELECT id FROM $tablebateau order by id DESC LIMIT 0,1") or die ("erreur requete zz");
$genre = mysql_fetch_array ($reqgenre);
$derniermodele = $genre["id"];
//On liste les comparatifs
for($idmodele=1000; $idmodele != $derniermodele ; $idmodele++){
for($idmodele2=$idmodele; $idmodele2 != $derniermodele ; $idmodele2++){
$idmarque = $marquemod[$idmodele];
$idmarque2 = $marquemod[$idmodele2];
$lastmod = $derniermod[$idmodele];
$lastmod2 = $derniermod[$idmodele2];
if($lastmod2 > $lastmod){$lastmod = $lastmod2;}else{}
$argref= carspec($tmarque[$idmarque].$genremod[$idmodele].'vs'.$tmarque[$idmarque2].$genremod[$idmodele2]);
$ttext = $ttext.'<url><loc>'.$url.'voiliers-'.$lang.'/'.$idmodele.'-'.$idmodele2.'-'.$argref.'.html</loc><lastmod>'.$lastmod.'</lastmod></url>';
}
}
|
Pour la structure ici j'utilise deux tables marque et modele. Dans modele je stock quasiement tous et marque je stocke le nom suivant la langue. |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|