SO如何计算数据库中的投票数,答案数和观点数?

时间:2012-07-20 08:02:16

标签: sql tsql select join count

我认为SO和其他问题/答案系统是高级TSQL技术的完美示例。我想知道SO和其他问题/答案系统如何与DB表一起使用。我特别感兴趣的是什么是TSQL选择问题列表,您还希望显示投票数和答案数。

question将被指定为此

id       int 
title    varchar
id_user  int

表格votes,以便您可以监控用户对特定问题的投票

id_user       int
id_question   int
vote          int

表'回答'回复问题

id           int
id_parent    int

question得到的结果如何选择:

id                 int
title              varchar
votes_count        int
answers_count      int

我正在考虑两种方法

  1. 表格question会在每次投票或回答时重新计算,并直接在votes_count表格中更新表格字段answers_countquestion。这意味着表格question也会votes_count int, answers_count int
  2. 创建将加入的select,直接在countvotes表中计算answers,并在question表中显示结果。通过计算所有选票和答案的所有记录,会损失多少速度?
  3. 感谢。

1 个答案:

答案 0 :(得分:0)

猜测表示只需使用3个表格 - 问题,投票和答案,并加入它们而不进行任何缓存(问题表中没有answer_cnt / vote_cnt列)。

性能损失应该没有什么可担心的 - 毕竟,SO“只”大约有340万个问题(根据SO开始页面),这对现代RDBMS来说真的不是很多数据。