2

ブログアプリケーションを実装している場合-何を好みますか-
「POSTS」テーブルにコメントの数を格納するカウンターがあります

SELECT comment_count 
  FROM posts WHERE post_id = $id 

...または「COMMENTS」テーブルからの特定の投稿に対するコメントの数を数える:

SELECT COUNT(*)
  FROM comments 
 WHERE post_id = $id

どちらがより最適化されていますか?

4

2 に答える 2

4

その特定のSQLクエリのパフォーマンスが問題であることが確実になるまで、2番目の形式であるCOUNTを使用します。最初に提案しているのは、基本的に非正規化です。これは、必要であることが確実にわかっている場合は、問題なくダンディです。

インデックスを使用すると、2番目のクエリを非常に迅速に実行できます。

于 2011-01-27T05:17:00.203 に答える
0

要因を見てみましょう。

ケース1:投稿を表示すると、コメントが表示されます。つまり、それらをすべて取得し、表示するときに数えることができます。その場合、いいえ。

ケース2:投稿を表示すると、コメントは表示されませんが、「15件のコメント」というリンクが表示されます。その場合、方程式があります。

カウントの具体化:

コメント保存1回のコスト=1挿入+1更新

1つの投稿表示のコスト=1読み取り

ブログ表示の平均数=D

コメントの平均数=C

したがって、ディスプレイDとコメントCの比率は、次のとおりです。

C *(挿入+更新)<D *(読み取り)

通常、D >> Cは真実なので、その余分な更新のコストはなくなることをお勧めします。

これはブログにとってそれほど重要ではないかもしれませんが、テーブルがたくさんあり、これらの決定を行う必要がある場合を知ることは重要な公式です。

于 2011-01-27T06:05:26.903 に答える