Bonjour,
j’ai un gro problème avec cette requete ci dessou qui me fait planté easy php.
je doit fair un affichage qui me sortira les origine, l’effectif et la moyenne de commande, logiquement ma requete marche mais elle est trop lourd je voulai savoir si j’ai pas moyen de l’optimisé
car après 3 minute sa me mets: Fatal error: Maximum execution time of 300 seconds exceeded in C:\Program Files\EasyPHP 3.0\phpmyadmin\libraries\dbi\mysqli.dbi.lib.php on line 164
voici la requete:
SELECT IF(cu.customers_from LIKE '1st%','1rst',cu.customers_from) AS Origin,
COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
AVG(co.commandes_montant) AS Mmc
FROM customers cu
INNER JOIN commandes co
ON cu.customers_id=co.customers_id
INNER JOIN relances_gratuites rg
ON cu.customers_id=rg.customers_id
WHERE co.commandes_status='1'
AND rg.relances_gratuites_inscription_date>='" . $date_du . "' AND rg.relances_gratuites_inscription_date<='" . $date_au . "'
GROUP BY Origin "
Ce qui est lourd est le inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id
Mais je suis obligé d’avoir ces trois table car je veu avoir les renseignements qui ce trouve entre ces deux dates, de plus si j’enlève la table commande sa marche très bien donc c’est la preuve que c’est un problème d’optimisation
Es-ce qu’il y a une autre façon de faire ou y-a-t-il une solution pour allegé la requette??
Merci