Requette trop lourd plante easy php
sinifer
Messages postés
323
Statut
Membre
-
sinifer Messages postés 323 Statut Membre -
sinifer Messages postés 323 Statut Membre -
Bonjour,
j'ai un gro problème avec cette requete ci dessou qui me fait planté easy php.
mais la question aussi que je me pose et que 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:
Ce qui est lourd est le inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id
Mais je suis obligé car je veu avoir les renseignements qui ce trouve entre ces deux dates.
Es-ce qu'il y a une autre façon de faire ou y-a-t-il une solution pour allegé la requette??
j'ai un gro problème avec cette requete ci dessou qui me fait planté easy php.
mais la question aussi que je me pose et que 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(customers_from LIKE '1st%','1rst',customers_from) AS Origin,
COUNT(*) AS effectif, AVG(commandes.commandes_montant) AS Mmc
FROM customers
INNER JOIN commandes ON customers.customers_id=commandes.customers_id
INNER JOIN relances_gratuites ON customers.customers_id=relances_gratuites.customers_id
WHERE commandes_status='1' AND relances_gratuites_inscription_date>='2009-04-11' AND relances_gratuites_inscription_date<='2009-04-28'
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é car je veu avoir les renseignements qui ce trouve entre ces deux dates.
Es-ce qu'il y a une autre façon de faire ou y-a-t-il une solution pour allegé la requette??
A voir également:
- Requette trop lourd plante easy php
- Easy php - Télécharger - Divers Web & Internet
- Wetransfer gratuit fichiers lourd - Guide
- Plante - Guide
- Reduire un document trop lourd - Guide
- Easy disk drive repair - Télécharger - Récupération de données
7 réponses
Je crois que tu n'as aucun index dans tes tables, il serait judicieux d'en créer.
Ta requete n'est pas si lourde que ça.
Ta requete n'est pas si lourde que ça.
c'est juste dans relances_gratuites que j'ai pas d'index et comme mes tables on beaucoup de donnée c'est peu être sa qui cloche
j'ai regardé pour ajouter des index sur la table relances_gratuites mais sa marche pas
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>='2009-04-26' AND rg.relances_gratuites_inscription_date<='2009-04-26'
ALTER TABLE relances_gratuites ADD INDEX (relances_gratuites_inscription_date)
GROUP BY Origin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voilà ce que sa me met:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE rg ALL NULL NULL NULL NULL 337195 Using where; Using temporary; Using filesort
1 SIMPLE co ALL NULL NULL NULL NULL 382065 Using where; Using join buffer
1 SIMPLE cu eq_ref PRIMARY PRIMARY 4 tti_comedie.rg.customers_id 1 Using where
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE rg ALL NULL NULL NULL NULL 337195 Using where; Using temporary; Using filesort
1 SIMPLE co ALL NULL NULL NULL NULL 382065 Using where; Using join buffer
1 SIMPLE cu eq_ref PRIMARY PRIMARY 4 tti_comedie.rg.customers_id 1 Using where
ce qui est drôle c'est que quand je fait cette requete j'ai aucun problème sa le fai de suite
SELECT IF(customers_from LIKE '1st%','1rst',customers_from) AS Origin,
COUNT(*) AS effectif_vg
FROM customers inner join relances_gratuites on customers.customers_id=relances_gratuites.customers_id
WHERE customers_client='0'
AND customers_emv='0'
AND customers_seance ='0'
AND relances_gratuites_inscription_date>='2009-04-12' and relances_gratuites_inscription_date<='2009-05-03'
GROUP BY Origin