2012-07-20 57 views
0

我認爲SO和其他問題/答案系統是高級TSQL技術的完美例子。我想知道SO和其他問題/答案系統如何與數據庫表一起工作。我特別感興趣的是什麼是TSQL選擇的問題列表,你也希望顯示票數和答案。SO如何計算數據庫中的投票數,回答數和意見數?

question將被指定爲這

id  int 
title varchar 
id_user int 

votes這樣就可以監視用戶的投票特定問題

id_user  int 
id_question int 
vote   int 

表 '答案' 與答覆問題

id   int 
id_parent int 

什麼會選擇看起來像得到結果從question喜歡這個LT:

id     int 
title    varchar 
votes_count  int 
answers_count  int 

我在想兩個方法

  1. question將與每一票重新計算或直接在question表回答和更新表字段votes_countanswers_count。這意味着表question會對也votes_count int, answers_count int
  2. 創建選擇這將加入,votesanswers表直接計算count,只是顯示question表結果。通過選擇所有選票和答案的記錄進行計數,會損失多少速度?

謝謝。

回答

0

SO只是使用3表爲這個問題,投票和答案,並加入他們沒有做任何形式的緩存(問題表中沒有answer_cnt/vote_cnt列)。

性能損失應該沒有什麼可擔心的 - 畢竟,SO只有大約340萬個問題(根據SO開始頁面),這對於現代RDBMS來說確實不是太多數據。