あなたがやっているすべてはポストの数を選択しているように見えますすべてのユーザーに対して、ユーザーあたり。あなたがからの照会結果セットにクエリをラップする必要はありません、あなただけでは、その後、あなたはそれと一緒にタグ付けする追加のユーザー情報を望んでいたならば、今すぐ
SELECT user_id, count(*) as totalPosts
from user_posts
group by user_id
経由でそれを行うことができることができなければなりませんzerkmsで述べたように、これはあなたが全体の合計を実行しているのいくつかの並べ替えとして常にたいものであれば、私は強く "を持っているユーザーのテーブルを更新することをお勧め、
また
SELECT users.LastName, users.FirstName, etc, user_id, count(*) as totalPosts
from user_posts
join users
on user_posts.user_id = users.user_id
group by user_id
:など、ユーザーテーブルに参加totalPosts "列を整数として返します。新しいエントリがuser_postsテーブルに追加されるたびに続いて、それだけにトリガを持っている...
更新ユーザーは、その後、あなたをUSER_ID =ユーザーIDがポストに
を作るtotalPostsの=のtotalPosts +1を設定します総計を再クエリし続ける必要はありません。ここでS/Oのいくつかの合計と同様に、ユーザーは合計点、合計awrdsなどの他の統計情報を持っています。そして、タグの後ろに、私は彼らもタグあたりの多くの質問の数を持っていると確信しています。将来のパフォーマンスキラーになるものについてCOUNT()を使用しないでください。
巨大なデータベースの場合、投稿を事前に計算しておいて、 'users'テーブルの列に数え、それを動的に計算する – zerkms
私はこのようにこのクエリを作成した理由を各ユーザに通知したいと思います... @zerkms –
私はそれを理解しています。データベースが大きく、頻繁に取得する必要がある場合は、そのデータとストアをあらかじめ計算する必要があります – zerkms