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 :

Un doute...select avec INNER JOIN


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut Un doute...select avec INNER JOIN
    Bonjour,

    Voila mon problème (enfin juste perplexe sur un point).
    J'ai une requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT e.typ_elmt,e.id_elmt,p.titre FROM elements_pages e INNER JOIN pages_site p ON e.id_page=p.id WHERE p.url ="qui-nous-sommes" ORDER BY e.ordre ASC
    Je récupère donc deux infos e.typ_elmt,e.id_elmt qui change tout le temps !
    En revanche le p.titre ets indiqué une seule fois et donc toujours le même !
    Dans ce cas faut-il créer une autre requête pour lui ou puis-je le récupérer ainsi ?

    En fait je me dis que ainsi, ce n'est pas optimiser il faudra chaque foi allé chercher le titre alors qu'il ne met necessaire qu'une seule fois !
    (peut être un truc qui gère automatiquement ce genre de cas et donc qu'il est plus avantageux de faire ainsi...je ne sais pas !)

    Quand pensez-vous ?

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: Un doute...select avec INNER JOIN
    C'est la manière standard de faire, il n'y a rien à redire là-dessus.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    C'est à dire ? manière standard...mais laquel ?

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Je veux dire: c'est tout à fait normal de faire une jointure, il n'y a rien de choquant là-dedans.

    Et question "optimisation", tu ne vas pas gagner grand chose à faire 2 requêtes (à part à faire deux communications sur le réseau). Je ne sais plus qui disait: "L'informatique, c'est l'art de passer des heures à gagner quelques millisecondes". Dans ton cas, c'est vrai (ta requête n'est pas suffisamment complexe pour véritablement gagner en termes de temps)

  5. #5
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Ouai...je comprends ce que tu veux dire...mais l'objet de la question n'ai pas réellement celui ou tu veux en venir...

    Je m'explique ! La jointure est déjà présente ! La pas de soucis on ne s'en occupe pas ! Seulement j'ai un champ supplémentaire à récupérer, or je peux le récuperer via la jointure ou par un autre select...
    Seulement je ne sais pas quel option il faut plutôt privilégier..!
    Car si je la récupère dans la jointure je vais retrouver se champ autant de fois qu'il y a d'éléments...or une seule fois me suffit car il sera identique dans tous les autres!

    Donc ma question est: est-ce que mysql gère automatiquement ce genre de cas en disant ce renseignement viens d'une table ou la valeur ne change jamais car on se base sur le même identifiant sur cette table....

    Cas inverse (non gérer par mysql), plutôt entreprendre un select à part, car si beaucoup d'éléments, occupation mémoire en plus inutile, requête plus lente, etc... (surement quelques millisecondes, mais ma question n'ai pas là, c'est pour savoir comment il faut pratiquer dans cette situation !)

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par Thierry8
    Donc ma question est: est-ce que mysql gère automatiquement ce genre de cas en disant ce renseignement viens d'une table ou la valeur ne change jamais car on se base sur le même identifiant sur cette table....
    Oui, MySQL fait ce genre d'optimisations en se basant sur les conditions de jointure (et aussi celles du WHERE).

    Pour plus de renseignements, voir dans la la doc MySQL le chapitre 7 (optimisations), en particulier les chapitres dont le nom commence par "How MySQL optimizes ..."

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    On peut aussi voir ça non pas d'un côté optimisation mais du point de vue masse de données circulant entre le client et le serveur.

    Si la requête retourne énormément de lignes, alors il sera effectivement probablement plus efficace de faire un SELECT unique renvoyant le titre plutôt que de voir X fois la même donnée transmise de façon redondante sur le réseau.

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

Discussions similaires

  1. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  2. requête avec inner join ?
    Par Melvine dans le forum Oracle
    Réponses: 5
    Dernier message: 30/03/2006, 09h16
  3. UPDATE avec INNER JOIN
    Par steelidol dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 03/03/2006, 23h56
  4. Problème de jointure avec INNER JOIN et LEFT OUTER JOIN
    Par tonio-lille dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/02/2006, 12h45
  5. [Oracle] problème avec INNER JOIN
    Par Philofish dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/09/2005, 10h20

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