1

これを処理する最善の方法を探しています。

eg: という名前の列を作成num_postsnum_topics、フォーラム テーブルとnum_postsトピック テーブル内に作成するか、クエリを使用してトピックと投稿の数をカウントしますか? num_postsusers テーブルに列がある場合と同じです。そして、特定のフォーラムでの最後のポスターや日付、トピックなどを取得するなど、その他すべてについて。

私が見ることができるように、これの悪い面は、ユーザーが投稿/トピックを削除するたびにそれらを更新する必要があることです. 彼らが投稿を削除した場合と同様に、フォーラムの last_post 列を前の投稿の投稿日に更新し、トピックを更新し、ユーザーを更新する必要があります。クエリを作成して、それを行う必要はありません。しかし、パフォーマンスはどうですか?

ベストプラクティスと見なされるものは何ですか?

4

1 に答える 1

0

どちらも機能します。

ここにはベスト プラクティスはありません。これは主に、テーブルがどのように設定され、インデックスが作成されるか、RDBMS がどのように反応するか、およびデータベースの負荷の大きさに依存します。

適切にインデックスが作成されていれば、投稿やトピックの数を取得するために毎回テーブルにクエリを実行しても、全体的な読み込みプロセスが大幅に遅くなることはありません。最新の RDBMS は、構成されている場合、これらのクエリをクエリ キャッシュに入れるため、さらに高速化されます。

ただし、いくつかのフォーラム エンジン (phpbb など) では、実際に、あなたが説明したように、これらの番号が表にあることを知っています。私の知る限り、彼らはデータベースに頼りすぎないようにしています (RDBMS が異なれば反応も異なります)。したがって、このようにすることは間違いではありません。

私の個人的な好みは、データベースに仕事を任せて、それらのフィールドを更新するためのオーバーヘッド関数をできるだけ長くコーディングしないことです。

于 2013-07-08T04:17:33.343 に答える