Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3088 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Group By - Mysql: Comment eviter de faire plusieurs requetes ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Group By - Mysql: Comment eviter de faire plusieurs requetes ?

n°1917173
MatthieuFo​urcade
Posté le 20-08-2009 à 20:20:57  profilanswer
 

Bonjour a tous,
 
Je voulais savoir s'il existe un moyen d'eviter de faire 5 groupy by different ?
 
En pratique j'ai une table avec plusieurs colonne: C1, C2, C3, ..., C10
 
Et j'ai plusieurs requete
 
SELECT C1, COUNT(C1) FROM BASE1 GROUP BY C1;
SELECT C2, COUNT(C2) FROM BASE1 GROUP BY C2;
SELECT C3, COUNT(C3) FROM BASE1 GROUP BY C3;
 
Il y a t-il un moyen d'eviter de faire plusieurs requetes et donc de limiter dans un soucis de performances les acces repeter a la table...
 
Merci de votre aide.
 
Cordialement,
 
Matt


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
mood
Publicité
Posté le 20-08-2009 à 20:20:57  profilanswer
 

n°1917179
drasche
Posté le 20-08-2009 à 21:29:58  profilanswer
 

Avec UNION?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1917262
casimimir
Posté le 21-08-2009 à 08:06:00  profilanswer
 

a voir si ca existe en mysql, mais en oracle il y a moyen de faire des rollup/cube qui permettent d'avoir des sous-totaux/totaux en une seule requête.
Donc a voir dans la doc de ton sgbd

n°1917331
MatthieuFo​urcade
Posté le 21-08-2009 à 13:34:38  profilanswer
 

Je me sens un peu con du coup :(  
 
Oui UNION ca marche, je comprends pas comment j ai fait pour pas y penser. Il faudrait que je recule de mon ecran des fois :)
 
J'ai donc fait des UNIONS et rajouter une colonne avec le numero de ma requete pour pouvoir traiter plus rapidement les donnes par la suite
 
SELECT 'Requete1', C1, C2, ... FROM Table Where [...])
UNION  
SELECT ' Requete2'. ...
 
Etc..
 
Merci bcp a tous.
 
Pour conclure je ne vois pas de grosse amelioration au niveau des perf. C'est tres equivalent. Mais au moins je ne fais pas 3 ou 4 acces a la base.
 
Cordialement,
 
Matt


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"
n°1917337
pataluc
Posté le 21-08-2009 à 14:13:31  profilanswer
 

j'ai l'impression qu'on doit pouvoir optimiser plus qu'avec des unions (les unions permettent d'avoir un seul accès, mais au niveau plan ca fait quand même 3 requetes), mais par contre faudrait détailler un peu ta requête pour ca...

n°1917338
nrv_from_c​nr
Posté le 21-08-2009 à 14:16:51  profilanswer
 

Coucou !
 
Ta recherche d'opti ressemble quelque peu à la mienne, ici :
http://forum.hardware.fr/hfr/Progr [...] 4964_1.htm
Je t'entraine peut-être sur une fausse piste quoique j'espère pas, mais si dans MySQL tu peux faire des curseurs (ce que j'ignore) ça peut être une piste à explorer ...
 
Ca vaut ce que ça vaut, passe pas trop de temps sur cette piste quand même ... ;)
 
Nrv

n°1917339
drasche
Posté le 21-08-2009 à 14:17:33  profilanswer
 

Vu les requêtes, je pense pas qu'il pourra passer outre un tel plan. L'union est la solution la plus simple à mon avis.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1917342
nrv_from_c​nr
Posté le 21-08-2009 à 14:22:13  profilanswer
 

S'il faut une requête globale de sa table pour toutes les valeurs de Cxx, qu'il la met en cache, et qu'ensuite il fait ses requêtes à partir des données en cache, il sauvegarde pas mal les accès base (un seul accès à la base via une seule requête rapatriant toutes les données nécessaires à ces requêtes sur Cxx).
Les requêtes pour chaque Cxx ne couterons alors que du temps machine.
 
J'ai pitêtre pas été clair dsl ;) Et là je parle en Oracle, jamais fait de MySQL, y'a peut-être un équivalent, je ne sais pas.
 
Nrv ;)

n°1917469
MatthieuFo​urcade
Posté le 21-08-2009 à 18:52:46  profilanswer
 

nrv_from_cnr  
 
> je vois ce que tu veux dire :)
 
Je n'ai pour l'instant pas trop de donnes sur cette base donc ca devrait aller avec les UNION. Mais je teste bientot sur une base de 2.5 Millions j'imagine que je verrai surement une difference dans ce cas ;)


---------------
Dell XPS 1330 M - T9300 - 4Go - 250Go 7200 tr - LED - 8400 Gs /// Custom - P4 935D - 2Go - 500Go 7200 tr - 7600 Gs - Asus 19"

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Group By - Mysql: Comment eviter de faire plusieurs requetes ?

 

Sujets relatifs
Difficulte avec Group By[Résolu][MySQL] Jointure à 5 tables
Problème retour à la ligne données mysqlrequetes multiples Mysql
Problème de connection Mysql en local, avec Easyphp ou Wampserver [OK][MySQL] Importation fichier txt : nom de champs?
Inserer données fichier excel dans base Mysqlenregistrement en arabe illisible dans la base mysql
Plus de sujets relatifs à : Group By - Mysql: Comment eviter de faire plusieurs requetes ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR