Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Discussion: Bonnes pratiques ?

  1. #1
    Membre Expert Avatar de Willpower
    Homme Profil pro Boris Dessy
    sans emploi
    Inscrit en
    décembre 2010
    Messages
    1 008
    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 008
    Points : 1 510
    Points
    1 510

    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

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2012
    Messages : 763
    Points : 1 230
    Points
    1 230

    Par défaut

    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?

  3. #3
    Membre Expert Avatar de Willpower
    Homme Profil pro Boris Dessy
    sans emploi
    Inscrit en
    décembre 2010
    Messages
    1 008
    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 008
    Points : 1 510
    Points
    1 510

    Par défaut

    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

  4. #4
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 747
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 747
    Points : 22 930
    Points
    22 930

    Par défaut

    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.

    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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •