05-07-2008, 01:57 PM
Presque personne n'as compris ce que j'ai voulus dire, je vais donc essayer d'être plus clair.
En même j'aide pas en inversant mes mots, quand je parlais du pseudo inutile je voulais parler du destinataire et non pas de l'expéditeur
Dans une table de base pour une messagerie, vous avez:
Si vous avez un site de moyenne taille, avec par exemple 15 000 membres et 300 000 messages (20 messages par membres). Le SGBD doit d'abord sélectionner les 20 messages puis aller chercher les 20 pseudos qui correspondent au sein d'une table de 15 000 entrées.
Comme le dit z3d, avec une complexité de O(n*log n) c'est une requête très lente.
Le principe d'optimisation est très simple, il suffit d'ajouter le pseudo de l'expediteur dans la base, on obtient donc cela:
Les opérations annexes comme l'ajout/suppression/affichage d'un message ne sont pas affectés.
Mais maintenant, lorsque l'on veut afficher les messages il n'est plus nécessaire de faire de jointure puisque l'on à déjà l'information dans nos tuples.
On fait donc une simple sélection/projection, cette simple optimisation nous permet d'obtenir une requête en O(n) plutôt qu'en O(n*log n).
Sans oublier que l'affichage de la messagerie est un point par lequel tout le monde passe. Il s'agit de la requête la plus demandé, et donc la plus importante à optimisé.
Pour l'intégrité référentielle, il est clair que dans le cadre d'une messagerie le changement de pseudo est quelque chose de rare et exceptionnel.
Je me suis peu être pas super bien exprimé, mais j'ai pas l'impression que tu as fait des efforts pour comprendre z3d.
En gros:
Et si tu avais la flemme de lire mon reply, tu pouvais lire ce qu'avais posté keke et Bladrak juste avant:
En même j'aide pas en inversant mes mots, quand je parlais du pseudo inutile je voulais parler du destinataire et non pas de l'expéditeur
Dans une table de base pour une messagerie, vous avez:
Citation :ID || IDDestinataire || IDExpediteur || Objet || Message.C'est un système qui fonctionne très bien, sauf pour la sélection des messages. Le cas typique est celui ou on veut afficher le pseudo de l'expéditeur et l'objet du message, afin de sélectionner le message que l'on souhaite lire. (Comme lorsqu'on lit ses emails).
Si vous avez un site de moyenne taille, avec par exemple 15 000 membres et 300 000 messages (20 messages par membres). Le SGBD doit d'abord sélectionner les 20 messages puis aller chercher les 20 pseudos qui correspondent au sein d'une table de 15 000 entrées.
Comme le dit z3d, avec une complexité de O(n*log n) c'est une requête très lente.
Le principe d'optimisation est très simple, il suffit d'ajouter le pseudo de l'expediteur dans la base, on obtient donc cela:
Citation :ID || IDDestinataire || IDExpediteur|| PseudoExpediteur || Objet || Message.
Les opérations annexes comme l'ajout/suppression/affichage d'un message ne sont pas affectés.
Mais maintenant, lorsque l'on veut afficher les messages il n'est plus nécessaire de faire de jointure puisque l'on à déjà l'information dans nos tuples.
On fait donc une simple sélection/projection, cette simple optimisation nous permet d'obtenir une requête en O(n) plutôt qu'en O(n*log n).
Sans oublier que l'affichage de la messagerie est un point par lequel tout le monde passe. Il s'agit de la requête la plus demandé, et donc la plus importante à optimisé.
Pour l'intégrité référentielle, il est clair que dans le cadre d'une messagerie le changement de pseudo est quelque chose de rare et exceptionnel.
Je me suis peu être pas super bien exprimé, mais j'ai pas l'impression que tu as fait des efforts pour comprendre z3d.
En gros:
z3d a écrit :On entends tout et n'importe quoi... :mauvais:A l'avenir fait l'effort de regarder le contexte.
Et l'intégrité des données que tu stockes ?
z3d a écrit :Maintenant si pour récupérer des messages on optimise en utilisant des chaînes de caractères dans la clause WHERE moi je veux bien faire le tour du monde en ballon en prêchant la bonne parole :heuuu:Fait un effort pour éviter de te foutre de la gueule des gens pour rien. Plutôt que de parler de, je cite "faire le tour du monde en ballon en prêchant la bonne parole :heuuu:" tu aurais pus prendre la peine de lire 4 messages au dessus:
Amrac a écrit :Tu garde l'ID car il est très rapide pour la sélection dans la base, mais tu garde aussi les pseudos.Est-ce que je dois vraiment expliquer cette phrase: "Tu garde l'ID car il est très rapide pour la sélection" ?
Et si tu avais la flemme de lire mon reply, tu pouvais lire ce qu'avais posté keke et Bladrak juste avant:
Bladrak a écrit :D'où l'intérêt de mettre les deux non ? (id + pseudo dans la même table)
Comme ça on fait une recherche par ID et on choppe le pseudo simplement
Citation :Dans la table messagerie tu veux que tu as :
id_emetteur
nom_emetteur
id_recepteur
nom_recepteur
C'est bien cela ? Afin d'éviter une recherche ?
"L’avenir ne peut être prédit mais les avenirs peuvent être inventés"
Denis Gabor.
Denis Gabor.