Bonjour,
Je me pose une question sûrement bête, à laquelle je n'arrive pas à trouver de réponses sur internet...
Imaginons une table articles, et une table pieces_jointes.
Un article peut avoir plusieurs pièces jointes. Dans ma table pièces-jointes, j'ai un index articleId (on pourrait aussi imaginer une relation plusieurs à plusieurs, mais là n'est pas la question qui me préoccupe).
Si je veux récupérer tous les articles avec leurs pièces jointes, je peux faire une jointure :
Je me retrouve avec un résultat comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT * FROM articles LEFT JOIN pieces_jointes ON pieces_jointes.articleId = articles.id
article A (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 1
article A (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 2
article A (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 3
article B (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 4
article C (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 5
article D (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 6
article D (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 7
article D (avec ses champs texte pouvant contenir des milliers de signes) | piece jointe 8
...
Ma question est la suivante : cette requête récupère autant de fois un même article qu'il y a de pièces jointes qui lui sont associées. Chaque article pouvant représenter une taille importante (imaginez plusieurs champs textes avec des milliers de caractères), cela n'est-il pas un problème en terme de mémoire (ou est-ce que le SGBD créé en fait un pointeur vers un unique enregistrement) ?
J'utilise PHP en langage serveur, et du coup, ne vaut-il pas mieux procéder en 2 requêtes ? Une qui récupères tous les articles, et une autre toutes les pièces jointes via un SELECT * FROM pieces_jointes WHERE articleId IN (...) ?
Ensuite, en PHP et avec une boucle, on peut associer aux articles les pièces jointes correspondantes.
Je me prends la tête pour rien, ou est-ce une vraie question ? Dans ce dernier cas, quelle est votre réponse ?
Merci d'essayer de m'aider à comprendre Je n'ai peut-être pas trouvé les formulations nécessaires, mais il m'a été impossible d'obtenir une quelconque réponse sur internet
Partager