J'ai vu cette question sur meta: https://meta.stackexchange.com/questions/33101/how-does-so-query-commentsComment interrogez-vous le style de stackoverflow des commentaires?
Je voulais mettre les pendules à l'heure et poser la question d'une manière appropriée.
Dire que j'ai 2 tables:
Posts id content parent_id (null for questions, question_id for answer) Comments id body is_deleted post_id upvotes date
Remarque: Je pense que c'est la façon dont le schéma est pour SO configuration, les réponses ont une parent_id qui est la question, les questions ont là nulle. Les questions et réponses sont stockées dans la même table.
Comment puis-je extraire le style stackoverflow des commentaires d'une manière très efficace avec un minimum d'allers-retours?
Les règles:
- Une requête unique devrait se retirer tous les commentaires nécessaires à une page avec plusieurs messages pour rendre
- besoins seulement retirer 5 commentaires par réponse, avec pref pour upvotes
- Doit fournir suffisamment d'informations pour informer l'utilisateur il y a plus de commentaires au-delà des 5 qui sont là. (et le nombre réel - par exemple 2 autres commentaires)
- Le tri est vraiment poilu pour les commentaires, comme vous pouvez le voir sur les commentaires dans cette question. Les règles sont, afficher les commentaires par date, CEPENDANT si un commentaire a un upvote c'est d'obtenir un traitement préférentiel et être affiché aussi bien en bas de la liste. (Ceci est méchant difficile à exprimer en sql)
Si des dénormalisations rendent les choses meilleures, quelles sont-elles? Quels index sont critiques?
@Mark: SO est configuré de sorte qu'une question et une réponse existent dans la même table. –
SO a des questions, des réponses et des commentaires. Quels sont les «messages»? Sont-ils des questions? Réponses? Tous les deux? Comment savoir quels messages appartiennent à quelle question? –
@OMG Poneys, OK Je ne le savais pas. –