【问题标题】:How does SO calculates number of votes, answers and views in database?SO如何计算数据库中的投票数、答案数和视图数?
【发布时间】:2012-07-19 11:43:49
【问题描述】:

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

表 question 将被指定为这个

id       int 
title    varchar
id_user  int

table 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 将在每次投票或回答时重新计算,并直接在question 表中更新表字段votes_count 和answers_count。这意味着表question 也会有votes_count int, answers_count int
  2. 创建将加入的选择,直接在votes 或answers 表中计算count,并在question 表中显示结果。每次选择所有投票和答案的记录都会损失多少速度?

谢谢。

【问题讨论】:

    标签: sql tsql select join count


    【解决方案1】:

    我猜想 SO 只是为此使用了 3 个表 - 问题、投票和答案,并将它们连接起来而不进行任何类型的缓存(问题表中没有 answer_cnt / vote_cnt 列)。

    性能损失应该没什么好担心的 - 毕竟,SO“只有”大约 3.4 个 mio 问题(根据 SO 起始页),对于现代 RDBMS 而言,这确实不是太多数据。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 2017-11-26
      • 2011-04-13
      相关资源
      最近更新 更多