私は各ユーザーが多くの投稿を持っているアプリを書いています。私は、最も多くの投稿を持つユーザーの上位3リストを生成したいと思います。私が考えることができる唯一の方法は、すべての投稿を取得し、各ユーザーの数を数えることです。これは非常に高価で、スケーラビリティがないようです。正確さは重要です。誰にも何か提案はありますか?has_many <model_name>というユーザーがいる場合、最も多くのユーザーを見つける正しい方法は何ですか。<model_name>?
0
A
答えて
1
Post.group(:user_id).order("count_all DESC").limit(3).count
仕事をする必要があります。これは、ユーザーによって投稿をグループ化し、投稿の数の後に注文し、最も多くの投稿を持つ3つだけを返します。
(0.3ms) SELECT COUNT(*) AS count_all, user_id AS user_id FROM "posts" GROUP BY user_id ORDER BY count_all DESC LIMIT 3
、あなたのために、このようなハッシュを返すレール:SQLクエリを理解し、より簡単かもしれ
{user_id => number_of_posts, user_id => number_of_posts, user_id => number_of_posts}
2
あなたはおそらくcounter_cacheを探しています:ActiveRecord association documentationをチェックしてください。基本的には、users表にデフォルトの0のposts_count整数列があり、関連でset:counter_cacheがtrueに設定されている場合、Railsは列を自動的に更新します。次に、最も多くの投稿を持つユーザーを取得するために、User.order('posts_count DESC').limit(3)
のようなことをすることができます。
関連する問題
- 1. この場合、より効率的なものは何ですか?</p> <p>ユーザー、ページ、写真</p> <p>写真がページに属し、ページが(彼らは1つしかない)ユーザーに属している:私のアプリで
- 2. 多くのユーザーと一緒に大きなファイルをアップロードする最も良い方法は何ですか?
- 3. ノミとダニの両方を持つユーザーを見つけるにはどうしたらいいですか?
- 4. 多くのユーザーとファイル/ディレクトリがある場合、ユーザーとパスを指定したファイルやディレクトリを簡単に見つける方法
- 5. SQLクエリの最も遅いブロックを見つける最も良い方法は何ですか?
- 6. 既存のタイプに最も近いマッチングタイプを見つける最も良い方法は何ですか?
- 7. ユーザーが日付を入力する最も良い方法は何ですか
- 8. プロセスを追跡しているユーザーを見つける方法
- 9. 2つのテーブル間で一致しないレコードを見つける最も速い方法は何ですか?
- 10. セグをNavコントローラスタックにプッシュしない方法は? <br/> ユーザーがログインしていない場合は、ショービュー:
- 11. elasticsearchで最も多く使われているフレーズを見つけるには?
- 12. 私のテンプレート演算子を呼び出す<<他に何も見つからない場合にのみ
- 13. ユーザーがジョージアを持っていない場合、何か良いフォントが戻ってくるでしょうか?
- 14. ユーザーが設定した新しい言語を見つける方法は?
- 15. Syncano AndroidのSDKには - ユーザーが、私はユーザーがログインしている場合、私がチェックすることができますどのように</p> <pre><code>Syncano.getInstance().loginSocialUser() </code></pre> <p>を使用してログイン
- 16. 投稿、コメント、ユーザー、投票モデルがすべて設定されています。ユーザーを投票できるようにするにはどうすればいいですか? <strong>ポスト</strong>、<strong>コメント</strong>、<strong>ユーザー</strong>と<strong>投票</strong>:
- 17. ポリゴンの最も近い点をユーザーの位置に見つけよう
- 18. Symfony2:いくつかのフィールドが見つからない場合、ログイン後にユーザー登録を完了させる
- 19. ユーザーの場所を見つける
- 20. はソートされていないセット<code>A</code><code>x</code>は、いくつかの整数<code>m</code>よりも大きくする必要があることなど<code>A</code>の要素ではない最小の整数<code>x</code>を見つけるための最も効率的なソリューション が何であるかを考えると、アレイ
- 21. Railsは私が3つのモデル、ユーザー、スキルとuser_skillを持っている...</p> <p>を
- 22. Crystalレポート:レポートを印刷する場合、ユーザー<strong>いつか</strong>をパラメータ
- 23. ディレクトリから最も古いファイルを見つける方法??? (PHP)
- 24. PHP - ユーザー名に基づいてユーザーレベルを見つける方法
- 25. ユーザーがOnMouseLeftButtonDownメソッド内をクリックした場所を見つける方法は?
- 26. PHPで多くのユーザーに電子メールを送信する最も効率的な方法は何ですか?
- 27. もし(isset($ video_url)&httpsだけが見つからない場合はどうすればいいですか?)
- 28. フォルダー内で最も古いフォルダーを見つける方法vb.net
- 29. ログインしているすべてのユーザーと、そのサイトにアクセスしているがログインしていないユーザーを見つける方法
- 30. 最高(最新)と最低(最も早い)日付を見つける方法
感謝を。それはとても涼しいです、私はあなたがそれをそうすることができるとは考えていませんでした。 – Max