|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2011 Messages : 4 ![]() |
Bonjour,
Je cherche à faire une requête spéciale, elle semble simple pourtant impossible de la faire. _____________ J'ai une table Client (je passe les détails des colonnes nom prénom etc) idclient Idrégion _____________ une table commande idclient montantcommande _____________ Je cherche à afficher les 10 meilleurs commandes de chaque région. Avec une magouille d'algo je peux avoir le résultat mais je cherche à améliorer mon sql. Autre recherche, afficher la somme des 10 meilleurs commandes par région. Ce qui implique un peu d'avoir trouvé la première requête. Exemple : cette requête me permet d'avoir la somme de toutes les commandes par région. Code :
Si je rajoute Limit 10 je n'aurais que 10 régions. Si je change SUM par MAX j'ai la meilleure commande par région. Voila le gros de mon problème, en espérant avoir été précis sur mon problème |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Regarde cette source, ce n'est pas dans la FAQ, mais ça devrait y être.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : août 2011 Messages : 4 ![]() |
Merci, à première vu l'idée est bonne, j'ai juste un problème, c'est que la requête demande trop de ressources, pour afficher 10 régions je me retrouve à attendre un temps fou.
Code :
Information complémentaire : je fais des tests sur une très grosse base de données : 200 000 utilisateurs, 300 000 commandes. L'idée final étant de faire des classements par région, par ville, voire d'autres critères sur le même genre de requête. |
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Sous quelle version de MySQL travailles-tu ?
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : août 2011 Messages : 4 ![]() |
version 5.1.36
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
OK. Pas étonnant alors que les performances se dégradent sur une sous-requête corrélée avec une volumétrie un peu forte.
A partir de la version 5.5, les perfs ont commencé à s'améliorer. Éventuellement, il faut tenter de passer par des tables temporaires pour éliminer les sous-requêtes...
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : août 2011 Messages : 4 ![]() |
L'aspect étrange, c'est de pouvoir faire la somme de tous les montants par région sans problème et ensuite lorsque je demande de ne prendre que 10 montants par région il lui faut un temps fou pour l'afficher.
|
|
|
00
|
|
|
#8 | ||
![]() ![]() |
Fais un EXPLAIN de la requête et tu devrais constater qu'il y a une lecture complète de table ou de sous-ensemble quelque part.
Citation:
Citation:
En mettant le premier calcul dans une table temporaire et en indexant cette table, il y a des chances pour que ça aille beaucoup plus vite. Bon courage.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#9 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
L'utilisation de jointures externes est elle necessaire ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#10 |
![]() ![]() |
C'est vrai que des commandes rattachées à aucun client seraient bizarres !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com