0

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

2つの方法を考えていました

  1. テーブルquestionは、投票または回答ごとに再計算され、テーブル フィールドが更新され、テーブル内votes_countanswers_count直接更新されquestionます。つまり、テーブルquestionにもvotes_count int, answers_count int
  2. 結合する選択を作成し、またはテーブルでcount直接計算し、結果をテーブルに表示するだけです。投票と回答のすべてのレコードを選択するたびにカウントすると、どれくらいの速度が失われるでしょうか?votesanswersquestion

ありがとう。

4

1 に答える 1

0

SOはこれに質問、投票、回答の3つのテーブルを使用するだけで、キャッシュを一切行わずにそれらを結合すると思います(質問テーブルにanswer_cnt /vote_cnt列はありません)。

パフォーマンスの低下は心配する必要はありません。結局のところ、SO には約 3.4 百万の質問が「ちょうど」あります (SO スタート ページによると)。

于 2012-07-20T14:08:21.083 に答える