IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

rapidité d'exécution, une grosse requête, ou plusieurs "petites" ?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut rapidité d'exécution, une grosse requête, ou plusieurs "petites" ?


    Voilà, je me posais cette question, vaut-il mieux une méga requête ou plusieurs petites ?

    Je suis en cours de me faire un petit forum perso, j'en suis pour l'instant aux prémices.

    Donc j'ai décidé de faire pour l'instant l'affichage des catégories et sous-catégories en 2 requêtes.

    Ci-dessous la structure provisoire de mes tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    f_cat
    +-------+-----------------+------+-----+---------+-------+
    | Field | Type            | Null | Key | Default | Extra |
    +-------+-----------------+------+-----+---------+-------+
    | id    | int(2) unsigned | NO   | PRI |         |       |
    | nom   | varchar(50)     | NO   |     |         |       | 
    +-------+-----------------+------+-----+---------+-------+
    f_ss_cat
    +---------+-----------------+------+-----+---------+-------+
    | Field   | Type            | Null | Key | Default | Extra |
    +---------+-----------------+------+-----+---------+-------+
    | id      | int(2) unsigned | NO   | PRI |         |       |
    | id_cat  | int(2) unsigned | NO   |     |         |       |
    | nom     | varchar(150)    | NO   |     |         |       |
    | comment | varchar(255)    | NO   |     |         |       |
    +---------+-----------------+------+-----+---------+-------+
    f_sujet
    +-----------+-----------------+------+-----+---------+----------------+
    | Field     | Type            | Null | Key | Default | Extra          |
    +-----------+-----------------+------+-----+---------+----------------+
    | id        | int(6) unsigned | NO   | PRI | NULL    | auto_increment |
    | id_ss_cat | int(2) unsigned | NO   |     |         |                |
    | nom       | varchar(50)     | NO   |     |         |                |
    | clos      | tinyint(1)      | YES  |     | NULL    |                |
    +-----------+-----------------+------+-----+---------+----------------+
    f_reponse
    +----------+-----------------+------+-----+-------------------+----------------+
    | Field    | Type            | Null | Key | Default           | Extra          |
    +----------+-----------------+------+-----+-------------------+----------------+
    | id       | int(8) unsigned | NO   | PRI | NULL              | auto_increment |
    | id_sujet | int(6) unsigned | NO   |     |                   |                |
    | auteur   | varchar(20)     | NO   |     |                   |                |
    | contenu  | text            | NO   |     |                   |                |
    | num      | int(4) unsigned | NO   |     | 0                 |                |
    | date     | timestamp       | YES  |     | CURRENT_TIMESTAMP |                |
    +----------+-----------------+------+-----+-------------------+----------------+
    Pour lister les catégories, total des sujets et total des messages, j'obtiens cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT C.nom, COUNT(R.num) AS tt_sujet, COUNT(R.num) AS tt_rep
    FROM f_cat AS C
    LEFT JOIN f_ss_cat AS SC
    ON C.id = SC.id_cat
    LEFT JOIN f_sujet AS S
    ON SC.id = S.id_ss_cat
    LEFT JOIN f_reponse AS R
    ON S.id = R.id_sujet
    GROUP BY C.nom
    HAVING tt_sujet = 0;
    Ce que je trouve déjà assez lourd, enfin je trouve, donc vaut-il mieux y ajouter la sélection des sous-catégories de chaques catégories dans cette requête, ou de faire un seconde requête(ce que je suis parti pour faire), ou cela revient-il au même ?

    Merci de vos réponses

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    perso, je te conseil une seule requête, même si elle est un peu importante, il sera toujours plus lourd d'effectuer une nouvelle transmission avec le serveur que traiter une jointure...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Ok, c'est un peu ce que je me disais, mais j'avais lu sur quelques forums que certains préconisaient de faire plusieurs petites requêtes plutôt q'une seule grosse.

    Et puis en plus je viens de me rendre compte que pour le traitement avec php, c'est plus facile en une seule.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter une même requête sur plusieurs bases
    Par TristanL dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/06/2011, 09h49
  2. Une grosse requête ou plusieurs petites ?
    Par Julien Bodin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/02/2010, 13h51
  3. [Oracle] Grosse requête ou plusieurs petites ?
    Par Pointu dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/07/2006, 11h00
  4. Réponses: 14
    Dernier message: 17/03/2003, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo