Précédent   Forum du club des développeurs et IT Pro > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 20h29   #1
Willpower
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 1 004
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 1 004
Points : 1 653
Points : 1 653
Par défaut Bonnes pratiques ?

Bonjour,

Je ne connais pas grand chose en optimisation SQL, donc voici ma question :

J'ai besoin de faire 2 requêtes sur une même table du genre :
Et :
Vaut-il mieux faire 2 requêtes distinctes ou faire une requête du genre :
Dans ce dernier cas, l'information SUM sera dupliquée pour chaque ROW donc ça me parait moins bon, mais sans ça, au final je me retrouve avec un nombre allucinant de requêtes SQL par page PHP. :/

Tous vos conseils seront les bienvenus, merci d'avance.
__________________
Code javascript :
eval(a='eval(a)')
recursive make it evil
eval make it eval


Mes sites : gpt1 - codeeplus - instantw
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 20h51   #2
Exia93
Membre Expert
 
Homme
Étudiant
Inscription : avril 2012
Messages : 599
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 599
Points : 1 049
Points : 1 049
Bonsoir,

quel est ta requête précisément ? Tu veut afficher par exemple les informations d'un utilisateur et la somme total des commande qu'il a passer depuis sont inscription ? Ou la même chose mais pour tous les utilisateurs enregistrer dans ta BDD?
Exia93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 00h56   #3
Willpower
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 1 004
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 1 004
Points : 1 653
Points : 1 653
Citation:
Envoyé par Exia93 Voir le message
Bonsoir,

quel est ta requête précisément ? Tu veut afficher par exemple les informations d'un utilisateur et la somme total des commande qu'il a passer depuis sont inscription ? Ou la même chose mais pour tous les utilisateurs enregistrer dans ta BDD?
En fait, je voudrais faire un truc du genre : SUM des achats... vérification du total, renvoyer la liste complètes des achats.

Code :
1
2
3
4
5
$req1 = SELECT SUM ...
IF($req1->SUM){
  $req2 = SELECT * ... 
  RETURN $red2->fetchAll;
}
je me demandais s'il était pas possible de faire :

Code :
1
2
3
4
5
$req = SELECT SUM, * ...
$data = $red->fetchAll;
IF($data->SUM){
  RETURN $data;
}
Mais bon, en fait je voudrais surtout savoir de manière générale s'il existe des conventions de bonnes pratiques sur les requêtes, s'il vaut mieux faire des requêtes plutôt gourmande et compliquées ou faire plusieurs requêtes. Un petit guide de "quand faire plusieurs requêtes et quand les regrouper" serait super.
__________________
Code javascript :
eval(a='eval(a)')
recursive make it evil
eval make it eval


Mes sites : gpt1 - codeeplus - instantw
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 11h21   #4
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 573
Points : 25 573
Envoyer un message via MSN à CinePhil
Un SGBD est fait pour traiter des données en masse et est muni d'un optimiseur de requête qui cherche la meilleure façon de l'exécuter pour accélérer le traitement.
Il ne faut donc pas avoir peur de soumettre des grosses requêtes à un SGBD.

Pour l'anecdote, j'ai eu il y a quelques semaines à faire une requête à partir de trois autres, ce qui a donné une requête d'une page et demi mais qui s'exécute sans problème dans Oracle.

Citation:
En fait, je voudrais faire un truc du genre : SUM des achats... vérification du total, renvoyer la liste complètes des achats.
Ça ressemble plus à du traitement, un enchaînement d'opérations, plutôt qu'à une seule opération à effectuer par une requête.
Qu'est-ce que "vérification du total" ? Qui le fait ? L'utilisateur ? Un programme externe à la BDD ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
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 la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h01.


 
 
 
 
Partenaires

Hébergement Web