Partage
  • Partager sur Facebook
  • Partager sur Twitter

Nom de tables dans les jointures

Sujet résolu
    7 décembre 2011 à 0:02:08

    Bonjour,

    Dans une jointure, on peut soit utiliser ON table.column = table.column soit ON column = column.

    Quand on créer une table avec des préfixes, par exemple membre_id, membre_pseudo... aucune table ne peux avoir le même nom de colonne. Dans ce cas faut-il utiliser la seconde solution ou est-ce que la première (table.column) améliore les performances ?

    Me viens cette question car je suppose qu'en utilisant la première solution mysql vas alors directement dans la table au lieux de parcourir les deux pour savoir à qui appartient la colonne, mais ce n'est qu'une supposition.

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      7 décembre 2011 à 9:12:39

      > Quand on créer une table avec des préfixes, par exemple
      > membre_id, membre_pseudo... aucune table ne peux avoir le même
      > nom de colonne.

      Si, puisque les foreign keys ont (si possible le même nom).

      Table forums : forum_id
      Table topics : topic_id, forum_id FK sur forums
      Table posts : post_id, topic_id FK sur topics

      donc : posts JOIN topics USING(topic_id) JOIN forums USING (forum_id)

      > Dans ce cas faut-il utiliser la seconde solution
      > ou est-ce que la première (table.column) améliore les
      > performances ?

      C'est identique, peut-être à 0.5µs près... osef.




      Me viens cette question car je suppose qu'en utilisant la première solution mysql vas alors directement dans la table au lieux de parcourir les deux pour savoir à qui appartient la colonne, mais ce n'est qu'une supposition.
      • Partager sur Facebook
      • Partager sur Twitter
        7 décembre 2011 à 18:17:39

        Merci.

        Pour ma part je préfixe tout. forum_id dans table topics s'appellera topics_forum_id. C'est une mauvaise methode ?
        • Partager sur Facebook
        • Partager sur Twitter
          7 décembre 2011 à 18:27:14

          Comme Lord Casque Noir l'a dit, ça rend les requêtes plus lourdes. Tu peux faire des jointures naturelles qui t'évitent d'ajouter des alias à toutes tes tables, la lecture est donc plus aisée. De plus, c'est conceptuellement plus logique, puisque tu stockes la même chose dans les deux colonnes : l'id d'un forum. Donc, forum_id dans les deux cas.

          Après, ce que tu fais n'est pas horrible (certainement mieux que d'appeler toutes les colonnes "id" par exemple), mais ça ne me paraît pas nécessaire parce que tu n'ajoutes pas d'information pertinente au nom.
          • Partager sur Facebook
          • Partager sur Twitter
            7 décembre 2011 à 18:36:34

            Ok ! Merci bien pour vos conseils. :)
            • Partager sur Facebook
            • Partager sur Twitter

            Nom de tables dans les jointures

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown