我认为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
我正在考虑两种方法
question
会在每次投票或回答时重新计算,并直接在votes_count
表格中更新表格字段answers_count
和question
。这意味着表格question
也会votes_count int, answers_count int
count
或votes
表中计算answers
,并在question
表中显示结果。通过计算所有选票和答案的所有记录,会损失多少速度?感谢。
答案 0 :(得分:0)
我猜测表示只需使用3个表格 - 问题,投票和答案,并加入它们而不进行任何缓存(问题表中没有answer_cnt / vote_cnt列)。
性能损失应该没有什么可担心的 - 毕竟,SO“只”大约有340万个问题(根据SO开始页面),这对现代RDBMS来说真的不是很多数据。