Problème de requête trop lourde

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de requête trop lourde

par SwiTz » 10 nov. 2005, 15:08

Voila cela fonctionne, maintenant le problème serai de créé des procédure stockés mais je n'y arrive pas mais ça c'est le sujet d'un autre post :D

par rami » 09 nov. 2005, 12:40

Quand je parle de clés étrangères, je parle des champs qui te servent à faire tes jointures entre table. Dans MySQL, on n'est pas obligé de spécifier de FOREIGN KEY, puisque le moteur MyISAM ne gère pas les contraintes d'intégrités.

Ca me paraît lourd de passer par des tables temporaires. Je ne veux pas paraître têtu, mais à mon avis, tu pourrais résoudre ton problème en mettant des index sur les champs.

Autrement; regarde du côté des requêtes INSERT ... SELECT ici

par SwiTz » 09 nov. 2005, 12:34

J'ai pas de clef étrangère sur mes tables en tout cas je n'ai pas créer de FOREIGN KEY. Mais sinon j'ai reglé le problème de temps, j'ai changé le temps d'éxécution dans mon script php, je l'ai mis à 0 (illimité)

Maintenant j'aurai une autre question mais qui concerne la fusion de plusieurs tables temporaire, j'ai des tables temporaires 3 pour être exacte qui chacune stocke le résultat de mes requetes

tab_tmp1 [NOM_DDV,DOM_VENTE,CA_CUM]
tab_tmp2 [NOM_DDV,DOM_VENTE,CA_CUM1]
tab_tmp3 [NOM_DDV,DOM_VENTE,CA_AN]

et je voudrais fusionner ces tables dans ma table de stockage du résultat final qui serai :

CA_DEPARTEMENT [NOM_DDV,DOM_VENTE,CA_CUM,CA_CUM1,CA_AN]

est ce possible ?

PS: désolé mes connaissances en sql sont limitées -_-'

par rami » 09 nov. 2005, 11:03

OK, mais tu peux toujours exécuter :

Code : Tout sélectionner

SHOW INDEX FROM ta_table
Ca te permettra de savoir quels champs sont indexés.

As-tu essayé de mettre des index sur les clés étrangères de tes tables?

par SwiTz » 09 nov. 2005, 10:36

@rami : Non je n'ai pas DDL (Database Definition Language), quand je clique sur export :s

par rami » 08 nov. 2005, 18:36

Alors, pour exporter la structure de ta table, tu fais:
1 - Mets toi dans ta perspective Quantum
2 - Clic droit dans la structure (là ou i ly a la liste de tes bookmarks)> Exporter
3 - Choisis DDL (Database Definition Language), puis ton bookmark et enfin les tables que tu veux exporter.
4 - Ensuite tu spécifies ton fichier de sortie.
5 - Et tu fais un copier-coller de ce fichier ici.

De plus, tu peux consulter les index sur tes tables ainsi:
Dans la vue Query Editor, tape:

Code : Tout sélectionner

SHOW INDEX FROM ta_table
Puis executes, tu auras alors la liste des index définis pour cette table.

par SwiTz » 08 nov. 2005, 17:51

Tu utilises le plugin quantum?
Oui tu connais *un sentiment de joie s'empare de moi* T_T <- pleure de joie. Enfin quelqu'un qui connait ce truc là. Oui j'ai donc le plugin Quantum.

@cyrano : Je travailles chez FT (France Télécom) et je dois utiliser les outils de la boite. Si je pouvais faire comme je fais chez moi y aurai déja longtemps que j'aurai EZPhP

par Cyrano » 08 nov. 2005, 17:48

C'est quoi cette boite ? Tu as quoi comme accès au juste ? Difficile de travailler dans ces conditions là, je te plains.

Bon, la solution, reproduire à la main quelque chose du genre:

Code : Tout sélectionner

+----------------------------------+ | nom_table | +------------------------+---------+ |nom colonne | clé | +------------------------+---------+ |champ_1 | PK | <= clé primaire (automatiquement indexé) |champ_2 | FK | <= clé étrangère (indexée ?) |champ_3 | | <= autre champ (indexé ?) +------------------------+---------+
Là on pourra te donner des indications.

par rami » 08 nov. 2005, 17:43

Tu utilises le plugin quantum?

par SwiTz » 08 nov. 2005, 17:37

Non plus hélas -_-'

par Cyrano » 08 nov. 2005, 17:35

Tu as accès à MySQL en ligne de commande éventuellement ?

par SwiTz » 08 nov. 2005, 17:34

Je n'utilise pas PhPMyAdmin car là où je travaille il me font travailler sous Eclipse avec un module PHP/MySQL et MySQL est gérer par Eclipse :s

par Cyrano » 08 nov. 2005, 17:31

Fais une exportation de la structure (surtout pas les données, ça va planter phpMyAdmin) de ces tables dans phpMyAdmin et colle-ça ici qu'on voit un peu tes index, j'ai un doute. Si tes tables en des tables MyISAM, c'est très rapide à la base, si tes champs sont correctement indexés en plus, ça ne devrait pas poser de problème même avec 1 million d'enregistrements... :-k

par SwiTz » 08 nov. 2005, 17:23

Mon application à pour but de diffuser le chiffre d'affaires des directions des ventes. Les requêtes que j'ai donné concerne les données qu'un utilisateur qui est un directeur général veut voir, il voudrais un tableau de la forme suivante :

NOM_DDV DOM_VENTE CA_CUM_N-1 CA_CUM_N CA_AN_N-1
--------------------------------------------------------------------------------

Le CA_CUM_N-1 correspond au chiffre d'affaire cumulé de janvier N-1 (2004) jusqu'au mois $mois de l'année N-1

Le CA_CUM_N correspond au chiffre d'affaire cumulé de janvier N (2005) jusqu'au mois $mois de l'année N. Etant donné que la mise à jour ce fais mois par mois cela revient au calcul de tout les CA_MOIS de l'année 2005

Le CA_AN_N-1 correspond au chiffre d'affaires de l'année N-1 (2004)

Voila donc en gros ce que l'utilisateur souhaite avoir comme info

par Cyrano » 08 nov. 2005, 17:23

La première chose que je remarque, c'est qu'à un détail près, les requêtes sont strictement les mêmes: la différence est la période recherchée :
- 2004
- 2005
- 2004 et mois <= à une variable $mois

Je ne sais pas comment fonctionne ton application, mais tu as deux solutions :
- faire trois requêtes pour obtenir trois gammes de résultats
- Faire une seule requête et trier ensuite par programmation pour avoir telle ou telle tranche.

La question qui se pose donc: comment vas-tu demander telle ou telle tranche ? Est-ce que ton formulaire a trois boutons et tu cliques sur l'un ou l'autre pour déclencher telle ou telle requête ?

En bref, il manque des morceaux pour te donner une réponse efficace.