Je dois traiter un certains nombre de résultats provenant de requête sql et d'une base mysql.
Pour l'heure mon script est vraiment très long à s'exécuter, auriez vous une idée pour m'aider à simplifier cette requête et gagner du temps d’exécution ?
Pour l'heure je n'ai pas créé d'index sur mes tables mais je ne sais trop quoi choisir comme index pertinent.
En gros j'ai une table CATEGORIE PRODUIT dont j'extrais un idcategorieproduit. J'ai une table PRODUITS avec idcatproduit et idproduit.
Ensuite une table COMMANDE (avec numerocommande) et COMMANDE CONTENU (avec idcatproduit, idproduit, quantite, total_ttc)
Le but est d'affiché pour chaque catégorie de produit, la liste des produits commandés de cette catégorie à une date donnée.
// 1 J'enregistre mes catégorie produits dans un array : $categorieproduit['idcat']
// 2 je boucle sur mes catégories de produits
foreach ($categorieproduit['idcat'] as $key => $val)
{
$idcat_boucle=$categorieproduit['idcat'][$key];
// 3 Je recherche les commandes pour un mois et année donnée
$result_C = mysql_query("select numcommande, datelivraison, statut FROM $MATABLECOMMANDE WHERE (MONTH(datelivraison)='$MOIS' and YEAR(datelivraison)='$ANNEE') order by numcommande");
while ($r_C = mysql_fetch_array($result_C))
{
$numcommande= $r_C['numcommande'];
// 4 je boucle sur le contenu de ces commandes et j'enregistre les produits dans un tableau multidimensionnel
$result_D = mysql_query("select idproduit,tarif_ttc,idcat,tarif_ht,quantite,idtva,nomproduit,tarif_tva FROM $MATABLECONTENUCMDE WHERE numcommande='$numcommande' and idcat='$idcat_boucle' order by idproduit");
while ($r_D = mysql_fetch_array($result_D))
{
$idproduit=$r_D['idproduit'];
$tarif_ttc=$r_D['tarif_ttc'];
$idcat=$r_D['idcat'];
$CALCUL_tarif_ht=$r_D['tarif_ht'];
$CALCUL_quantite=$r_D['quantite'];
$CALCUL_idtva=$r_D['idtva'];
// J'affiche le résultat de cette requête produit
echo ''.$idcat.' > '.$idproduit.' > '.$tarif_ttc.'';
}
}
}