Optimiser requetes complexes
dedeuzo
Messages postés
1
Statut
Membre
-
pyschopathe Messages postés 2053 Statut Membre -
pyschopathe Messages postés 2053 Statut Membre -
Bonjour,
Pas un pro en mysql, je me heurte à un enorme probleme de requete...
Temps dépassé... requetes qui n'aboutissent pas... navigateur planté, etc
J'ai bien peur que la base que j'ai récupéré d'une ancienne société soit inexploitable.
J'y vois un challenge pour certaines pointures qui fréquentent ce site !
Mon probleme est le suivant :
J'ai 3 tables
- ARTICLES : avec 10 000 codes barre (ean) ( fichier ici : http://dedeuzo.free.fr/articles.sql )
- ENTREE : avec des codes barres, qui sont rentrés dans 2 etats (N ou B) et la quantité (plus date) ( fichier ici : http://dedeuzo.free.fr/entree.sql )
- SORTIE : avec des codes barres, qui sont rentrés dans 2 etats (N ou B) et la quantité (plus date)( fichier ici : http://dedeuzo.free.fr/articles.sql )
Le but du jeu est de faire une page PHP qui extirpe chaque code barre de ARTICLES (normalement il y a une colonne titre que j'ai retirée pour réduire le poid des fichiers ci-dessus) et doit aller compter le nombre d'exemplaire de la table ENTREE et lui soustraire ceux de la table SORTIE pour CHACUN etats N et B
je souhaite donc obtenir le nombre de ref en stock en NEUF et en OKKAZ pour chaque ref de la table ARTICLES
soit :
- code barre 0000000000000 de article = ( nbre de code barre de entree - nbre code barre de sortie = total en N)
- code barre 0000000000000 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en B)
code barre 0000000000001 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en N)
- code barre 0000000000001 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en B)
(etc... etc...)
- code barre 0123456789101 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en N)
- code barre 0123456789101 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en N)
ma requete actuelle est :
$query_ARTICLES_B = "
SELECT articles.ean, (IFNULL(achat.achat_sum, 0) - IFNULL( vente.vente_sum, 0)) AS InStock
FROM articles
LEFT JOIN ( SELECT entree.ean, SUM(qte) AS achat_sum, entree.etat AS entree_etat , entree.ts AS entree_ts FROM entree WHERE entree.etat = 'B' AND entree.ean NOT LIKE '%37600068%' GROUP BY entree.ean )
AS achat ON achat.ean=articles.ean
LEFT JOIN ( SELECT sortie.ean, SUM(qte) AS vente_sum, sortie.etat AS sortie_etat , sortie.ts AS sortie_ts FROM sortie WHERE sortie.etat = 'B' AND sortie.ean NOT LIKE '%37600068%' GROUP BY sortie.ean )
AS vente ON articles.ean=vente.ean
WHERE achat.ean=articles.ean
ORDER BY articles.ean ";
(j'y ai passé 3 jours !!! après, pour ce qui est des autres manips PHP, là ça roule)
mais plus rien ne s'affiche sur mon wamp (temps depassé) et c'est de plus en plus long et n'arrive pas au bout 1 fois sur 2 en ligne chez free...
Mais là, devant la base qui ne cesse de grandir, j'ai bien peur de ne pas savoir comment optimiser cà !
Je ne peux pas lâcher mon pote sur ce coup là, il ne peux pas faire appel à un pro au vu de l'état de sa boite...
Bref : CCM est sans doute ma dernière chance. Par avance merci à vous tous pour vos pistes, conseils, liens ou même solutions !!!!
Cordialement.
Pas un pro en mysql, je me heurte à un enorme probleme de requete...
Temps dépassé... requetes qui n'aboutissent pas... navigateur planté, etc
J'ai bien peur que la base que j'ai récupéré d'une ancienne société soit inexploitable.
J'y vois un challenge pour certaines pointures qui fréquentent ce site !
Mon probleme est le suivant :
J'ai 3 tables
- ARTICLES : avec 10 000 codes barre (ean) ( fichier ici : http://dedeuzo.free.fr/articles.sql )
- ENTREE : avec des codes barres, qui sont rentrés dans 2 etats (N ou B) et la quantité (plus date) ( fichier ici : http://dedeuzo.free.fr/entree.sql )
- SORTIE : avec des codes barres, qui sont rentrés dans 2 etats (N ou B) et la quantité (plus date)( fichier ici : http://dedeuzo.free.fr/articles.sql )
Le but du jeu est de faire une page PHP qui extirpe chaque code barre de ARTICLES (normalement il y a une colonne titre que j'ai retirée pour réduire le poid des fichiers ci-dessus) et doit aller compter le nombre d'exemplaire de la table ENTREE et lui soustraire ceux de la table SORTIE pour CHACUN etats N et B
je souhaite donc obtenir le nombre de ref en stock en NEUF et en OKKAZ pour chaque ref de la table ARTICLES
soit :
- code barre 0000000000000 de article = ( nbre de code barre de entree - nbre code barre de sortie = total en N)
- code barre 0000000000000 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en B)
code barre 0000000000001 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en N)
- code barre 0000000000001 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en B)
(etc... etc...)
- code barre 0123456789101 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en N)
- code barre 0123456789101 de article est donc en ( nbre de code barre de entree - nbre code barre de sortie = total en N)
ma requete actuelle est :
$query_ARTICLES_B = "
SELECT articles.ean, (IFNULL(achat.achat_sum, 0) - IFNULL( vente.vente_sum, 0)) AS InStock
FROM articles
LEFT JOIN ( SELECT entree.ean, SUM(qte) AS achat_sum, entree.etat AS entree_etat , entree.ts AS entree_ts FROM entree WHERE entree.etat = 'B' AND entree.ean NOT LIKE '%37600068%' GROUP BY entree.ean )
AS achat ON achat.ean=articles.ean
LEFT JOIN ( SELECT sortie.ean, SUM(qte) AS vente_sum, sortie.etat AS sortie_etat , sortie.ts AS sortie_ts FROM sortie WHERE sortie.etat = 'B' AND sortie.ean NOT LIKE '%37600068%' GROUP BY sortie.ean )
AS vente ON articles.ean=vente.ean
WHERE achat.ean=articles.ean
ORDER BY articles.ean ";
(j'y ai passé 3 jours !!! après, pour ce qui est des autres manips PHP, là ça roule)
mais plus rien ne s'affiche sur mon wamp (temps depassé) et c'est de plus en plus long et n'arrive pas au bout 1 fois sur 2 en ligne chez free...
Mais là, devant la base qui ne cesse de grandir, j'ai bien peur de ne pas savoir comment optimiser cà !
Je ne peux pas lâcher mon pote sur ce coup là, il ne peux pas faire appel à un pro au vu de l'état de sa boite...
Bref : CCM est sans doute ma dernière chance. Par avance merci à vous tous pour vos pistes, conseils, liens ou même solutions !!!!
Cordialement.
A voir également:
- Optimiser requetes complexes
- Optimiser son pc - Accueil - Utilitaires
- Tcp optimiser - Télécharger - Optimisation
- Optimiser windows 10 - Guide
- Optimiser et défragmenter le lecteur - Guide
- Optimiser un pdf - Guide
1 réponse
Hello !
Va voir par ici, je pense que ça pourrait t'aider : https://forums.commentcamarche.net/forum/affich-14077640-optimisation-du-code-php#1
Va voir par ici, je pense que ça pourrait t'aider : https://forums.commentcamarche.net/forum/affich-14077640-optimisation-du-code-php#1